我遇到了在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, ");
}
}
我有:
,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>
:
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>")
非常感谢任何帮助!
答案 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。