此for循环无法运行。这个简单的代码应该得到页面上的所有H5元素,然后得到" innerHTML"但代码永远不会运行for循环。
function myFunction() {
var x = document.getElementsByTagName("h5").length;
alert(x);
var y;
var z;
for (i = 0; i < x.length; i++) {
y = document.getElementsByTagName("h5")[i];
z = y.innerHTML;
alert(z + " this");
}
}
答案 0 :(得分:7)
您正在.length
上寻找x
属性,该属性本身就是一个长度数字。我想你的意思是:
var x = document.getElementsByTagName("h5");
当然
for (i = 0; i < x; i++) {
取决于您之后使用x
做什么
答案 1 :(得分:1)
var x = document.getElementsByTagName("h5").length;
// ...
for (i = 0; i < x.length; i++) {
您正在拨打.length
两次。
答案 2 :(得分:0)
其他答案是正确的,但这里有一些重构和一些解释。
function myFunction() {
// Taking out the '.length' means you have a reference to all the h5s
var x = document.getElementsByTagName("h5");
alert(x);
var y;
var z;
//Now since you're not including the .length above, this loop is correct
for (i = 0; i < x.length; i++) {
//You since x is a reference to all the h5s now you don't
//have to search for them again.
y = x[i];
z = y.innerHTML;
alert(z + " this");
}
}
重要的部分是使用一个getElementsByTagName
电话,因为这是一个相对昂贵的功能。如果你能避免它,你肯定不想在循环中调用它。通常要编写好的javascript,你想尽可能多地重用对DOM Elements的引用,因为DOM比Javascript慢得多。