这是我在论坛上的第一篇文章。在这里,我有一个javascript试图循环,并将每个元素设置为活动类,然后等待,删除类并将其添加到下一个元素。我的问题是,它只做第一个,然后就不做了……
var i = 1;
function myLoop() {
setTimeout(function() {
var i = 1;
var j = (i - 1);
$("#nH" + j).removeClass("active");
$("#nH" + i).addClass("active");
i++;
if (i < 5) {
myLoop();
}
}, 3000)
}
myLoop();
发布于 2012-02-29 23:57:48
在var j = (i - 1);
之前删除var i = 1;
并将其添加到此处
if (i < 5) {
i=1;
myLoop();
}
发布于 2012-03-01 00:02:46
我相信这是因为您将i赋值为1,因此它会一次又一次地删除相同元素的类。所以它实际上被调用了多次,但你并没有意识到效果是一样的。问题出在变量i和j的逻辑上,试试这个。
var i = 1;
function myLoop() {
setTimeout(function() {
var j = (i - 1);
$("#nH" + j).removeClass("active");
$("#nH" + i).addClass("active");
i++;
if (i==5)
i=1;
if (i < 5) {
myLoop();
}
}, 3000)
}
myLoop();
发布于 2012-03-01 00:40:31
这是一个不使用循环和全局变量的解决方案。example。
setInterval((function(min, max){
var i = min;
return function() {
$("#nH"+i).addClass("active");
$("#nH"+(i===min ? max : i-1)).removeClass("active");
if (++i > max ) i = min;
}
})(0, 4), 1000);
https://stackoverflow.com/questions/9502294
复制相似问题