首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jquery每60秒执行一次不同的操作

jquery每60秒执行一次不同的操作
EN

Stack Overflow用户
提问于 2013-03-20 16:06:14
回答 4查看 196关注 0票数 0

我想每隔60秒执行一个不同的动作,通过动画来改变我的背景。现在单击即可运行。

代码语言:javascript
复制
$(document).ready(function(){ 

$("li.one").click( function(){ 
    $('#switch-container').animate({backgroundColor: '#18597f'}, 1000)
});

$("li.two").click( function(){ 
    $('#switch-container').animate({backgroundColor: '#8a0651'}, 1000)
});

$("li.three").click( function(){ 
    $('#switch-container').animate({backgroundColor: '#8a0651'}, 1000)
});

我怎么能这样做呢?谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-20 16:12:24

代码语言:javascript
复制
var colors = ['#18597f','#8a0651','#8a0651'],
    timer  = setInterval(function() {
        var rand = parseInt(Math.random()*(3 - 0),10);
        $('#switch-container').animate({backgroundColor: colors[rand]}, 1000);
    }, 1000);

编辑:

要按常规顺序而不是随机更改颜色,请执行以下操作:

代码语言:javascript
复制
var colors = ['green','red','yellow'],
    i      = 0,
    timer  = setInterval(function() {
        $('#switch-container').animate({backgroundColor: colors[i++]}, 500);
        i = i==3 ? 0 : i;
    }, 1000);
票数 2
EN

Stack Overflow用户

发布于 2013-03-20 16:08:11

使用setInterval()

setInterval()方法以指定的间隔(毫秒)调用函数或计算表达式。

代码语言:javascript
复制
setInterval(function(){
  //code for animation
},DURATION);
票数 2
EN

Stack Overflow用户

发布于 2013-03-20 16:11:49

代码语言:javascript
复制
$(document).ready(function () {
        //  alert("hello");
        changecolor();
    });
    function changecolor() {
        // alert("hi");
        var colors = ["#00FF00", "#CCCCCC", "#990099", "#FEA400", "#FF9900", "#6600FF", "#333333", ];
        var rand = Math.floor(Math.random() * colors.length);
        $('#controls-wrapper').css("background-color", colors[rand]);
        setTimeout('changecolor()', 100);
    }

如果您不关心计时器中的代码是否会比您的时间间隔更长,请使用setInterval():

代码语言:javascript
复制
setInterval(function, delay)

它一遍又一遍地触发作为第一个参数传入的函数。

一种更好的方法是,将setTimeout与自动执行的匿名函数一起使用:

代码语言:javascript
复制
(function(){
    // do some stuff
    setTimeout(arguments.callee, 60000);
})();

这保证了在代码执行之前不会进行下一次调用。在本例中,我使用arguments.callee作为函数引用。给函数命名并在setTimeout中调用是一种更好的方式,因为arguments.callee在ecmascript 5中已被弃用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15518240

复制
相关文章

相似问题

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