DOM节点关系(一)

节点中的各种关系可以用传统的家族关系来描述,相当于把文档树比喻成家谱。

  

 

父节点

parentNode  获取该节点的父节点

<script type="text/javascript">

window.οnlοad=function(){

var oInput=document.getElementsByTagName("input");

for (var i=0;i<oInput.length;i++){

oInput[i].οnclick=function(){

this.parentNode.style.display="none";

}

}

}

</script>

<body>

<p>我的爱好</p>

<ul id="ul1">

  <li>爬山<input type="button" value="隐藏"></li>

  <li>跑步<input type="button" value="隐藏"></li>

<li>读书<input type="button" value="隐藏"></li></ul>

</body>

运行结果:

 

 

点击每一行对应的隐藏按钮,对应的爱好就会隐藏。

子节点

childNodes

 获取该节点的子节点数组

window.οnlοad=function(){

var oUl=document.getElementById("ul1");

console.log(oUl.childNodes.length);//7

console.log(oUl.childNodes[0].nodeType);

console.log(oUl.childNodes[1].nodeType);

         for (var i=0;i<oUl.childNodes.length;i++){

          if (oUl.childNodes[i].nodeType==1){

          // oUl.childNodes[i].style.background="red";

          }

         }

         // oUl.firstChild.style.background="red";

         // oUl.firstElementChild.style.background="red";

         var oFirst=oUl.firstElementChild||oUl.firstChild;

         oFirst.style.background="red";

}

</script>

<body>

<ul id="ul1">

<li>111</li>

<li>222</li>

<li>333</li>

</ul>

</body>

运行结果:7

这是在谷歌浏览器运行的结果,因为在ul后面的空白节点作为它的子节点,在火狐以及其他非IE浏览器也是这样的,只有在IE浏览器ul的子节点的个数为3。当把ul、li的空白都消除后,那么ul的子节点的长度就为3,如下所示

<body>

<ul id="ul1"><li>111</li><li>222</li><li>333</li></ul>

</body>

这就是为什么在非IE浏览器中ul的子节点个数为7而不是3的原因,也就是说

childNodes存在浏览器兼容的问题。

childNodes要结合nodeType(节点类型)一起使用。

nodeType :节点类型,返回值为数字

元素:1

属性:2

文本:3

注释:8

文档:9

for (var i=0;i<oUl.childNodes.length;i++){

          if (oUl.childNodes[i].nodeType==1){

           oUl.childNodes[i].style.background="red";

          }

         }

该代码可以设置ul子节点的背景颜色为红色

 

 

 


firstChild

获取该节点的第一个子节点

 只有在IE浏览器表示第一个子节点

firstElementChild

获取该节点的第一个子节点。在非IE浏览器中表示第一个子节点

为例解决第一个子节点的浏览器兼容问题,我们需要用到或(||)操作符

 

var oFirst=oUl.firstElementChild||oUl.firstChild;

         oFirst.style.background="red";

该代码可以设置ul第一个子节点111的背景颜色为红色

 

 

 

lastChild

获取该节点的最后一个子节点

lastElementChild

获取该节点的最后一个子节点

最后一个子节点和第一个子节点一样存在兼容问题,也是以同样的方式解决


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值