我是JS和Query的新手,所以我认为这是一个非常简单的任务,我想只需要从 $。每个()“loop” >到 $()。each()和for循环。 这是我的代码。
var tab = ["John", "Steve", "Ben", "Damon", "Ian"],
$list = $('#list');
$.each(tab,function(index,value){
$list.append("<li>"+ value+ "</li>");
});
第二个和第三个循环不起作用:
tab.each(function(index){
$list.append("<li>"+ tab[index] + "</li>");
});
和
for (var i,len=tab.length;i<len;i++) {
$list.append("<li>"+ tab[i]+ "</li>");
}
有什么问题?
答案 0 :(得分:5)
正确初始化for
循环时出错:
for (var i,len=tab.length;i<len;i++) {
//-------^ - Missing inital value.
$list.append("<li>"+ tab[i]+ "</li>");
}
更改为:
for (var i=0,len=tab.length;i<len;i++) {
$list.append("<li>"+ tab[i]+ "</li>");
}
第二个不起作用,因为tab
不是要迭代的jQuery对象! :)
$.each
的语法是:
$.each(dataArray, function() { });
或者,如果你有一个DOM jQuery对象:
$(Selector).each(dataArray, function() { });
答案 1 :(得分:1)
您需要在
中更改为var i=0, len=tab.length
for (var i,len=tab.length;i<len;i++) {
$list.append("<li>"+ tab[i]+ "</li>");
}
答案 2 :(得分:0)
如果要迭代Javascript数组而不是jQuery选择,则必须使用$ .each,这就是它的工作方式。
至于你的第三个例子,我需要用0初始化。否则它是未定义的,当与数组的长度比较时,它总是为假。
答案 3 :(得分:0)
根据jQuery的文档:
$ .each()函数与$(selector).each()不同,后者用于独占于jQuery对象进行迭代。 $ .each()函数可用于迭代任何集合,无论它是对象还是数组。在数组的情况下,回调每次都传递一个数组索引和相应的数组值。 (也可以通过this关键字访问该值,但Javascript将始终将此值包装为Object,即使它是一个简单的字符串或数字值。)
另外see here:
以下是您需要记住的内容:
答案 4 :(得分:0)
将您的JS数组包装成jQuery对象,以便能够调用它们:
$(tab).each(function(){
$list.append("<li>"+ this + "</li>")
})
并使用零(i = 0)初始化运行变量,此外,出于可读性原因,您不应将tab.length存储到临时变量中:
for(var i=0; i<tab.length; i++) {
$list.append("<li>"+ tab[i]+ "</li>")
}
答案 5 :(得分:0)
试试这个,
var tab = ["John", "Steve", "Ben", "Damon", "Ian"];
for(i=0;i<=tab.length;i++)
{
alert(tab[i]);
}