为了账号安全,请及时绑定邮箱和手机立即绑定

请问!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>


正在回答

3 回答

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

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

0 回复 有任何疑惑可以回复我~
#1

慕盖茨9358327 提问者

我有试过加if判断,如果是元素节点(类型为1)那就执行这段代码,结果还是一样不行。
2018-05-22 回复 有任何疑惑可以回复我~
#2

慕盖茨9358327 提问者

非常感谢!问题是我的判断语句的条件出错了
2018-05-23 回复 有任何疑惑可以回复我~
<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>

为啥这段代码却可以??

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信