DOM节点

95 阅读1分钟

节点操作

什么是DOM节点? DOM树里每一个内容都称为节点

DOM节点的分类
1.元素节点 比如div标签
2.属性节点 比如class属性
3.文本节点 比如标签里面的文字

父节点查找

parenNode
返回最近一级的父节点 找不到返回为null

子元素.parenNode

子节点查找

childNodes
获得所有子节点

children(重点)
获得所有子元素节点 返回的还是伪数组

父元素.children(childNodes)

<body>
<div class="erweima">
<!-- 我是注释 -->
abc
<span>aaa</span>
<img src="images/code.png" alt="" />
<span>X3</span>
</div>

<script>
// 父找子
let erweima = document.querySelector('.erweima')
// childNodes:获取所有子节点
// console.log(erweima.childNodes) // 
// children:只会获取元素节点
console.log(erweima.children) // 
</script>
</body>

兄弟节点查找

查找下一个兄弟节点
nextElementSibling

查找上一个兄弟节点
previousElementSibling

<body>
<div class="erweima">
<span>我是span</span>
<p>我是p元素</p>
aaa
<img src="images/code.png" alt="" />
<span> X3 </span>
<h3>我是h3</h3>
</div>


<script>
let p = document.querySelector('p')
console.log(p.nextElementSibling) // img
console.log(p.previousElementSibling) // span
console.log(p.parentElement) // erweima
console.log(p.parentNode) // erweima
// console.log(p.nextSibling) // aaa
// console.log(p.previousSibling) // aaa
</script>
</body>

增加节点

创造一个新的元素节点 document.createElement('标签名')

插入到这个父元素的最后 父元素.appendChild(要插入的元素)

<body>
<button>来一个p元素</button>
<div class="box">
</div>

<script>
let btn = document.querySelector('button')
let box = document.querySelector('.box')
btn.addEventListener('click', function () {
let newP = document.createElement('p')
newP.innerText = '我是新创建的p元素'
box.appendChild(newP)
})
</script>

插入到这个父元素的前面 父元素.insertBefore(要插入的元素,在哪个元素前面)

<body>
<button>来一个p元素</button>
<div class="box">
<p>123</p>
</div>
<script>
let p = document.querySelector('p')
btn.addEventListener('click', function () {
let newP = document.createElement('p')
newP.innerText = '我是新创建的p元素'
box.insertBefore(newP, p)
})
</script>

克隆节点

克隆一个已有的元素节点 元素.cloneNod(布尔值)(复制节点并把复制的节点放到指定元素的内部)

cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值 若为true,则代表克隆时会包含后代节点一起克隆--深拷贝
若为false,则代表克隆时不包含后代节点--浅拷贝
默认为false

删除节点

父元素.removeChild(要删除的元素)注意:(如果不存在父子关系无法删除)

<body>
<table border="1" width="400">
<thead>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>张三</td>
<td>20</td>
<td>
<button>删除1</button>
</td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>30</td>
<td>
<button>删除2</button>
</td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>40</td>
<td>
<button>删除3</button>
</td>
</tr>
</tbody>
</table>

<script>
let btns = document.querySelectorAll('button')
let tbody = document.querySelector('tbody')
//因为是伪数组,所以需要遍历得到删除按钮
for (let i = 0; i < btns.length; i++) {
btns[i].addEventListener('click', function() {
//找到btns的的父亲的父亲,也就是tr,点击删除时才能删除一整行
tbody.removeChild(btns[i].parentNode.parentNode)
})
}

时间对象

时间戳

<script>
实例化
let date = new Date()
获取时间戳(得到的是毫秒)
console.log(date.getTime());

简写
console.log(+new Date());
</script>

Snipaste_2022-04-06_23-38-23.png