javascript – 无法访问HTMLCollection的值

的test.html

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Untitled Document</title>
    <script>
    var eles = document.getElementsByClassName('review');
    console.log(eles);
    console.log(eles.length);
    console.log(eles[0]);
    // for(var i=0, max=eles.length)
    </script>
</head>
<body>
    <div class="review"></div>
    <div class="review"></div>
    <div class="review"></div>
    <div class="review"></div>
    <div class="review"></div>
</body>

我检查了eles代表HTMLCollenction.

Here表示HTMLCollection还通过名称和索引直接将其成员公开为属性.

所以我尝试通过console.log(eles.length)和console.log(eles [0])进行调试.
但不幸的是,控制台显示0和未定义.(使用谷歌Chrome工具开发人员)

我怎样才能访问eles的结果?
我想更改样式并将属性添加到ClassName获取的标签.
另外,我只能使用自然的Javascript.

解决方法:

问题是您已将脚本放在标头中,该标头在加载html元素之前执行,因此getElementsByClassName()不会返回任何元素.

一种解决方案是等待加载html元素然后执行您的脚本,为此您可以使用窗口对象加载事件

window.addEventListener('load', function () {
    var eles = document.getElementsByClassName('review');
    console.log(eles);
    console.log(eles.length);
    console.log(eles[0]);
})

或者您可以将脚本放在body元素的底部而不是head中,以便在解析和执行脚本时将元素加载到dom中

上一篇:怎样理解HTMLCollection接口


下一篇:javascript – 如何从HTMLCollection中删除项目?