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

请问!childNodes不是返回的数组吗?为何for循环里不能运行?

<!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");
   var x = mylist.parentNode.parentNode.parentNode.childNodes[7].childNodes[1];//.childNodes[3].childNodes[0].nodeValue;
   for(var i = 0;i<x.childNodes.length;i++){
       document.write(x.childNodes[i].childNodes[0].nodeValue);
   }
</script>
</body>
</html>


提问者:慕盖茨9358327 2018-05-21 19:39

个回答

  • qq_一个走心的ID_0
    2018-05-22 15:31:12
    已采纳

    document.write(x.childNodes[i].childNodes[0].nodeValue);

    childNodes[i]的子节点有元素节点和文本节点,文本节点没有子节点,所以childNodes[0]这里会出错

  • 慕盖茨9358327
    2018-05-21 19:44:00

    <script  type="text/javascript">
           var mylist = document.getElementById("tcon");
           var hc=mylist.parentNode.parentNode.parentNode.lastChild.childNodes[1].childNodes;
           for(var i=0;i<hc.length;i++){
             if(hc[i].nodeType==3){
                 continue;
             }
             else{
                 document.write(hc[i].firstChild.nodeValue+'<br/>');
             }
           }
    </script>

    为啥这段代码却可以??