问答详情
源自: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"); 

   var my=mylist.parentNode.parentNode.parentNode.lastChild.firstChild.lastChild;

       document.write(my.innerHTML);

</script> 

</body>

</html>


提问者:Zz张浩 2016-03-24 14:11

个回答

  • qq_甘蔗_0
    2016-03-24 18:09:49
    已采纳

    var my=mylist.parentNode.parentNode.parentNode.lastChild.firstChild.lastChild;

           document.write(my.innerHTML);这句错误.

    var my=mylist.parentNode.parentNode.parentNode.lastChild  这一步指的是lesson4,

    后面应该用 childNodes[1].childNodes; 其中childNode[0]值得是HTML/CSS这段文本.

    你错就错在.firstChild直到文本节点去了.

    正确应该是:var me=mylist.parentNode.parentNode.parentNode.lastChild.childNodes[1].childNodes;

    然后循环打印出来:

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

            if(me[i].firstChild!=null){

                document.write(me[i].firstChild.nodeValue+"<br />")

            }

        }


  • 纪行川
    2016-03-25 08:51:34

     var my=mylist.parentNode.parentNode.parentNode.lastChild //这里你得到的是“lesson4”元素节点
    .firstChild//这里你访问的是“HTML/CSS”这个文本节点
    .lastChild;//这里就无效了,没有子节点了

     var my=mylist.parentNode.parentNode.parentNode.lastChild.childNodes[1]

    //不是IE浏览器数字要换成2才能访问到ul节点,空格和回车符也算成是文本节点