【发布时间】:2012-09-14 07:24:23
【问题描述】:
我有两个功能
function getImgStr(imgName){
thisStr = '<img src="/_shared/img/discovery/200x100/'+imgName+'.jpg">';
return thisStr;
}
function buildIt(imgSrc){
console.log(imgSrc);
$('#content').append('<div></div>');
$('#content div:last').hide()
.addClass('imgBox')
.attr('id',imgSrc)
.html(getImgStr(imgSrc))
.slideDown(2000);
}
我有一个正在循环的数组
$(function(){
for(i=0;i<=imgList.length-1;i++){
buildIt(imgList[i]);
}
});
工作正常,没有问题。
但是当我尝试包装时,这是一个 setInterval is barfs
$(function(){
for(i=0;i<=imgList.length-1;i++){
var loadIt = setInterval(function(){
buildIt(imgList[i]);
},1000);
}
});
当 setInterval 存在时, buildIt 中的 console.log 是未定义的,所以我假设间隔会以某种方式影响循环,但我不明白我做错了什么。有什么想法吗?
【问题讨论】:
-
尝试用循环的内容编写另一个函数并将任何变量(包括索引
i)传递给它。 -
另外,如果您不需要,您可能不想将 setInterval 设置为变量。我知道 clearInterval 是结束间隔计时器的原因,但是在循环中覆盖该变量也可能会影响它(尚未对此进行测试)。
-
您的 for 循环在您的 setInterval 甚至运行 sp 之前完成,它很可能将 imgList[4] 传递给您的函数。
-
setInterval本身就是一个循环。您应该决定是要间隔多次执行代码(使用setInterval),还是立即执行(使用普通循环)。
标签: javascript jquery for-loop setinterval