问答详情
源自:9-10 访问父节点parentNode

获取属性节点问题

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<ul id="con">
<li id="lesson1">javascript
  <ul>
      <li id="tcon"> 基础语法</li>
      <li>流程控制语句</li>
      <li>函数</li>
      <li>事件</li>
      <li>DOM</li>
  </ul>
</li>
<li id="lesson2">das</li>
<li id="lesson3">dadf</li>
<li id="lesson4">HTML/CSS
  <ul>
    <li>文字</li>
    <li>段落</li>
    <li>表单</li>
    <li>表格</li>  
  </ul>
</li></ul>  
<script  type="text/javascript">    
   var mylist = document.getElementById("tcon");
   document.write(mylist.parentNode.parentNode.parentNode.lastChild.innerHTML);
   var childs = mylist.parentNode.parentNode.parentNode.childNodes;
   document.write(childs[childs.length-7].innerHTML);
   for(var i=0;i<childs.length;i++){

       document.write(childs[1].getAttribute("id"));//为啥这样就有输出

       if(childs[i].getAttribute("id")=="lesson4"){//这样程序就不走了
           document.write(childs[i].innerHTML);
       }

   }

</script>

</body>
</html>

提问者:qq_丨银丨_0 2016-08-25 15:37

个回答

  • 子夜o阳光
    2016-08-25 15:49:08
    已采纳

    因为childs[i].getAttribute("id")当i=0时,childs[0]是#text没有id这个属性,所有就不继续运行了

  • 子夜o阳光
    2016-08-25 15:59:46

    for(var i=0;i<childs.length;i++){
           if (childs[i].nodeType == 1) {//过滤掉#text
               if (childs[i].getAttribute("id") == "lesson4") {//这样程序就不走了
                   document.write(childs[i].innerHTML);
               }
           }
       }