Javascript 在for循环中获取html元素

Javascript 在for循环中获取html元素,javascript,for-loop,Javascript,For Loop,此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.getElementsBy

此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");
    }
}
您正在查找x上的.length属性,它本身就是一个长度数字。我想你的意思是:

var x = document.getElementsByTagName("h5");
当然了

for (i = 0; i < x; i++) {
取决于你以后对x做了什么

var x = document.getElementsByTagName("h5").length;
// ...
for (i = 0; i < x.length; i++) {

你打了两次电话给.length。

其他答案都是正确的,但这里有一些重构和解释

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元素的引用,因为DOM比javascript慢得多

也许你应该取消这个方法?我的功能;我认为,在for循环中,它应该是I=0;i