getElementsByClassName("btn").length的输出

<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" >
        var x=document.getElementsByClassName("btn").length;
        document.write(x);
    </script>
</head>
<body>
        <div class="btn">1</div>
        <div class="btn">2</div>
        <div class="btn">3</div>
        <div class="btn">4</div>
</body>
</html>

为何输出结果是

0
1
2
3
4

阅读 2k
1 个回答

document.write()执行时.Document树还没有初始化. 所以是 0. 后面的是div显示数字.
如果想要打印长度,加上onload函数,那么你会发现一个神奇的效果,就是页面就显示一个4.
div哪去了?
因为js在执行时Document已经创建好了.在执行Document.write时,就会重新打开一个新的文档流.
新的文档流就会把之前存在的页面都被清除掉了.
write要慎用.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题