的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中