无法访问HTMLCollection的值

REI*_*REI 3 javascript html5 dom 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>
Run Code Online (Sandbox Code Playgroud)

我检查了eles代表HTMLCollenction.

这里说HTMLCollection还通过名称和索引直接将其成员公开为属性.

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

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

Aru*_*hny 8

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

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

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

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