0

我遇到了在 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,

  • 在 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,

奇怪的!为什么afor 循环内的变量值为零?为什么height()值(在嵌套for循环中)完全丢失?为什么 IE8 连这一行都没有写成功?

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

任何帮助将不胜感激!

4

1 回答 1

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。

于 2013-02-17T18:36:56.923 回答