急!!!! 这里面子元素节点不应该有4个吗?两个li和两个文本节点,为什么用for遍历只显示2个li

来源:9-13 插入节点insertBefore()

Andis

2015-12-05 13:32

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

</head>

<body>


<ul id="test"><li>JavaScript</li><li>HTML</li></ul> 

 

<script type="text/javascript">


  /*var otest = document.getElementById("test");  

  var newnode=document.createElement("li");

  newnode.innerHTML="php";

  otest.insertBefore(newnode,otest.childNodes[1]);

*/

  var otest = document.getElementById("test");

  var a=otest.childNodes;

  document.write(a.length+"<br/>");

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

  document.write(a[i].nodeName+"<br/>");

  

  }

</script> 


</body>

</html>


写回答 关注

5回答

  • 慕雪5145742
    2015-12-27 13:13:19

      var otest = document.getElementsByTagName("li")[0];

      var a=otest.childNodes;

      document.write(a.length+"<br/>");

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

      document.write(a[i].nodeName+"<br/>");

      

      }

     最后显示:1

    #text

  • 慕雪5145742
    2015-12-27 13:08:55

    otest 是<ul> ,它的子节点 为2个<li>,而<li>的子节点才是文本节点

  • 木子舟义
    2015-12-06 19:56:47

    再一次测试, a的length为5..循环里也输出了5个 两个li  三个 #text 文本节点

  • KokoTa
    2015-12-05 15:18:25

    <ul id="test">

    <li>JavaScript</li>

    <li>HTML</li>

    </ul> 

    改成这样你再试试看 因为在同一行的话由于紧凑的排列并不会产生文本节点哦 酱紫

  • 木子舟义
    2015-12-05 13:38:39

    var otest = document.getElementById("test");

    var a=otest.childNodes;   

    otest 是 ul   a是ul中的节点,不包括文本节点。所以长度为li的长度

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题