javascript DOM操作 节点的遍历

一、通过javascript的遍历可以由一个节点来查找它的子节点(childNodes)、兄弟节点(nextSibling/previousSibling)和父节点(parentNode)。

代码说明:

<ul id="myul">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>

1、获取ul的所有子节点——childNodes

<script>
var ul=document.getElementById('myul');
for(var i=0;i<ul.childNodes.length;i++){
console.log(ul.childNodes[i]);
}
</script>

2、因为通过1获取了ul的所有的子节点,所以就可以直接通过childNodes来直接访问它里面的子节点

提醒:1、childNodes最后获得的是一个数组对象childNodes[i]    2、这里所获得的素有子节点也包括空白节点,看截图

javascript DOM操作  节点的遍历

所以,

访问第一个li: ul.childNodes[1]或者ul.childNodes.item(1)

第二个li: ul.childNodes[3]或者ul.childNodes.item(3)

第三个li: ul.childNodes[5]或者ul.childNodes.item(5)

第四个li: ul.childNodes[7]或者ul.childNodes.item(7)

3、访问到了第一个li,就可以通过第一个li节点来访问后面一个或者前面一个,那就是nextSibling/previousSibling

所以:

第二个li:ul.childNodes[1].nextSibling.nextSibling(不要忘了之间的空白节点);

第一个li:   ul.childNodes[3].previousSibling.previousSibling

4、当然我们也可以直接通过firstChild和lastChild来访问ul的第一个节点和第二个节点

5、访问到子节点,直接parentNode找到父节点

二、解决空白节点的问题

1、在js里面添加一个判断

<script>
var ul=document.getElementById('myul');
for(var i=0;i<ul.childNodes.length;i++){
if(ul.childNodes[i].nodeType==1){
console.log(ul.childNodes[i]);
}
}
</script>

这样控制台打印出的结果就是4个li子元素

2、还是上面的例子

获得所有li:  ul.children获得一个数组

第一个li:ul.children[0]或者ul.children.item(0)或者ul.firstElementChild;

兄弟li:nextElementSibling/previousElementSibling

最后一个li:lastElementChild

上一篇:[java学习笔记]java语言核心----面向对象之构造函数


下一篇:Struts2拦截器模拟