<!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>
document.write(x.childNodes[i].childNodes[0].nodeValue);
childNodes[i]的子节点有元素节点和文本节点,文本节点没有子节点,所以childNodes[0]这里会出错
<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>
为啥这段代码却可以??