首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript (Jquery)循环不工作

Javascript (Jquery)循环不工作
EN

Stack Overflow用户
提问于 2012-02-29 23:52:48
回答 4查看 173关注 0票数 2

这是我在论坛上的第一篇文章。在这里,我有一个javascript试图循环,并将每个元素设置为活动类,然后等待,删除类并将其添加到下一个元素。我的问题是,它只做第一个,然后就不做了……

代码语言: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();​
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-29 23:57:48

var j = (i - 1);之前删除var i = 1;并将其添加到此处

代码语言:javascript
运行
复制
  if (i < 5) {
     i=1;
     myLoop(); 

  } 
票数 3
EN

Stack Overflow用户

发布于 2012-03-01 00:02:46

我相信这是因为您将i赋值为1,因此它会一次又一次地删除相同元素的类。所以它实际上被调用了多次,但你并没有意识到效果是一样的。问题出在变量i和j的逻辑上,试试这个。

代码语言:javascript
运行
复制
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();​
票数 1
EN

Stack Overflow用户

发布于 2012-03-01 00:40:31

这是一个不使用循环和全局变量的解决方案。example

代码语言:javascript
运行
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9502294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档