我有一个简单的html页面,其中包含 javascript
var myitems = document.getElementsByClassName("img");
for (var z = 0; z <= myitems.length; z++) {
alert("hello" + myitems.length);
}
html 页面的一部分 -
<a href="#"><img class="img" src="image/100.jpg" alt="z"/></a>
<a href="#"><img class="img" src="image/200.jpg" alt="z"/></a>
<a href="#"><img class="img" src="image/400.jpg" alt="z"/></a>
<a href="#"><img class="img" src="image/300.jpg" alt="z"/></a>
我的问题是 myitems.length 总是返回0,应该是4。
答案 0 :(得分:2)
您的查询可能失败的几个原因:
最常见的问题是#1。修复方法是确保您的代码放在页面HTML中的那些元素之后,使用一个框架告诉您文档何时就绪,或者自己订阅一个事件,这样您就可以知道文档何时就绪。
如果您对单个普通的javascript函数调用感兴趣,可以告诉您何时文档在所有浏览器中都已准备就绪,您可以在此处获取代码:pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it尽管您可能需要做的就是移动要查询的DOM元素之后的<script>
标记(例如,在</body>
标记之前的HTML末尾,如下所示:
<html>
<body>
<a href="#"><img class="img" src="image/100.jpg" alt="z"/></a>
<a href="#"><img class="img" src="image/200.jpg" alt="z"/></a>
<a href="#"><img class="img" src="image/400.jpg" alt="z"/></a>
<a href="#"><img class="img" src="image/300.jpg" alt="z"/></a>
<script>
var myitems = document.getElementsByClassName("img");
for (var z = 0; z <= myitems.length; z++) {
alert("hello" + myitems.length);
}
</script>
</body>
</html>
答案 1 :(得分:1)
试试这个,
<a href="#"><img class="img" src="image/100.jpg" alt="z"/></a>
<a href="#"><img class="img" src="image/200.jpg" alt="z"/></a>
<a href="#"><img class="img" src="image/400.jpg" alt="z"/></a>
<a href="#"><img class="img" src="image/300.jpg" alt="z"/></a>
<script>
var myitems = document.getElementsByClassName("img");
for (var z = 0; z <= myitems.length; z++) {
alert("hello" + myitems.length);
}
</script>
答案 2 :(得分:0)
在JSFiddle为我工作。所以,这可能取决于您在代码中的Javascript位置。如果您的代码段位于Elements之前,则它将返回0的长度,因为在计算Javascript时,DOM中没有元素。如果您将Javascript放在文档的末尾,它应该可以工作。
编辑:要在Javascript中查找错误,您可以使用Firebug-Console