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

为什么输出的长度是13,但是把内容输出时,却多了好多?

<!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"); 
    document.write(mylist.parentNode.parentNode.parentNode.lastChild.innerHTML)*/
    var x = document.getElementsByTagName("li");
   document.write(x.length)
    for(i=0;i<x.length;i++)
    {document.write("*"+x[i].innerHTML+"*"+"<br/>"+"<br/>")}
</script>

</body>
</html>


正在回答

3 回答

确实是输出了22次,因为这个x的长度,竟然在执行的过程中会变,可能是在循环中往页面写入时,上面的那个会动态去重新抓取,我也不太确定,确实没见过这种情况。不过换一种写法就好了,就是13个,就是先循环,然后只执行一次写入。

<script type="text/javascript">
    var x = document.getElementsByTagName("li");
    var str = '';
    for (i = 0; i < x.length; i++) {
        str+="*" + x[i].innerHTML + "*</br>";
    }
    document.write(str);
</script>


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

王师1984 提问者

非常感谢!
2015-12-07 回复 有任何疑惑可以回复我~

我用* 和 *  隔开每次的输出 ,共输出了22对 ** 就证明  应该是输出了22次  为什么呢


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

因为你输出的是 li里面的内容  x[i].innerHTML   可以你有几个li里面 还包含了UL  这个 ul 里又包含了li   所以在这一个li里输出的东西就不是只有一行字了,就会比较多。其实还是只输出了13次。你用断点调一下就知道了。

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

王师1984 提问者

我用* 和 * 隔开每次的输出 ,共输出了22对 ** 就证明 应该是输出了22次 为什么呢
2015-12-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么输出的长度是13,但是把内容输出时,却多了好多?

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