jquery在javascript for循环中没有按预期工作

时间:2013-02-17 18:25:26

标签: javascript jquery

我遇到了在javascript for循环中使用jQuery的问题。经过超过24小时的调查,我决定发布问题的核心。我把代码缩小到了一个简单的例子:

var a, i, j;
var n = $("div.kategorija_tekst").length;
document.write("n = " + n + "<br>");
for (i = 0; i < n; i++){
    a = $("div.kategorija_tekst").length;
    document.write("polje["+i+"]  = " + a +"<br>");
    for (j = 0; j < a; j++){
        document.write($("div.def_tekst").eq(j).height() + "px, ");
    }
}

我有:

    Opera 12.14中的
  • ,Google Chome 24.0.1312.57 m,Safari 5.1.7。,Firefox 18.0.2:

      

    n = 6,polje [0] = 0,polje [1] = 0,polje [2] = 0,polje [3] = 0,polje [4] = 0,polje [5] = 0,< / p>

  • 在IE8中
  •   

    n = 6

但应该预期为:

  

n = 6,polje [0] = 6,28px,28px,polje [1] = 6,28px,28px,polje [2] = 6,28px,28px,polje [3] = 6,28px,28px ,polje [4] = 6,28px,28px,polje [5] = 6,28px,28px,

奇怪!为什么for循环中的a变量值为零?为什么height()值(在嵌套for循环中)完全丢失?为什么IE8甚至没有成功写出这条线?

("polje["+i+"]  = " + a + "<br>")

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

document.write会覆盖文档内容:

var a, i, j;
var n = $("div.kategorija_tekst").length; 
document.write("n = " + n + "<br>"); //document no longer has any elements
for (i = 0; i < n; i++){
    a = $("div.kategorija_tekst").length; // returns null, no such thing in document
    document.write("polje["+i+"]  = " + a +"<br>");
    for (j = 0; j < a; j++){
        document.write($("div.def_tekst").eq(j).height() + "px, ");
    }
}

您正在覆盖文档内容,因此下一个选择器始终返回null。