es6d的for of循环遍历dom但循环不执行

我写了个小DEMO熟悉for of循环遍历DOM,却发现一些问题并不知道怎么解决。代码如下面。
js代码如下:

var DOM1 = document.getElementsByTagName("li");
console.log(DOM1);
for (let d of DOM1) {
        console.log("执行");
    console.log(d);
}

HTML中相关代码如下:

<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>    
    </ul>
</body>

控制台输出如下:图片描述

这说明li都获取到了啊,但就是for循环中的不执行,请指点为什么。
(浏览器是支持ES6的)

首先在这里感谢各位的热心回答,我看了之后自己又思考了一下,最后发现了问题所在。请允许我进行简单的描述:

我之前问题中的js代码是写在头部<head></head>标签内的,并且没有使用window.onload语句,所以DOM没加载完他就执行了,之后我加上这个,或者把他放在<body></body>的最下面,就可以正常输出了。

然后对于这个问题,我又有了个新的疑问,因为由解决办法看,我们似乎可以理解为是因为文档未加载完就执行了js代码,所以li并没有被获取,然而我的DEMO中输出结果的截图中也看到了,这个DOM1输出表明是获取到了3个li的。所以我有些无法理解。

阅读 4.7k
7 个回答

你浏览器坏了吧。。。
同样代码 我这可以执行

clipboard.png

刚试了下有输出的

图片描述

这是可以的,你的什么浏览器?

按题主的运行了一遍,没问题的;
可能浏览器不支持后面这种语法
图片描述

用querySelectorAll试试。

刚试了一下可以,要是浏览器不支持这种写法是会报错的。

新版的chrome基本都没问题的

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