setTimeout不工作设置为30000,但不工作

时间:2013-09-10 13:18:53

标签: javascript jquery

我有这样的事情:

var isAnimating = 'no';
$('.big-slider-button img').click(function(e){

                if(isAnimating=='no')
                    {
                    isAnimating = 'yes';
                    setTimeout(isAnimating = 'no',30000);
                var img_nr = $(this).attr('description');
                if(img_nr!='0')
                {
                    var image = $('.billboard').attr('src');
                    var new_image = (image.substr(0,image.length-9))+img_nr+"-big.png";
                    $(".billboard").fadeOut(1000, function() {
                        $(this).attr('src',new_image);
                        $('.big-slider-button img').attr('description',parseInt(img_nr)-1);
                        $('.big-slider-button-right img').attr('description',parseInt(img_nr)+1);
                    }).fadeIn(1000);
                }}

            });

但它不起作用。我故意将30000设置为超时以查看它是否正常工作,但事实并非如此。谁能告诉我我做错了什么?提前感谢大家的帮助。

编辑:谢谢你们的答复。如果我的问题很愚蠢的话,我很满意JQUERY,所以很抱歉。

3 个答案:

答案 0 :(得分:6)

setTimeout

 setTimeout(function(){ isAnimating = 'no' },30000);

答案 1 :(得分:6)

你需要传递一个回调函数

setTimeout(function(){
    isAnimating = 'no'
},30000);

答案 2 :(得分:1)

setTimeout的第一个参数是您希望在指定的时间量过后运行的一段代码。在Javascript中,必须将可执行代码单元作为函数传递,因此您需要创建一个函数来执行您想要在30s内完成的任何操作。

setTimeout(function(){ isAnimating = 'no'; }, 30000);

您也可以简单地传递一个函数的名称(不带括号),让它在超时后执行,如下所示:

doStuff = function(){ isAnimating = 'no'; };
setTimeout(doStuff , 30000);

另外,确保isAnimating是全局的,如果您希望使用此方法在对象上设置局部变量,则需要某种方式从全局范围访问它。有关范围和闭包的更多信息,请查看此问答:How to solve Var out of scope within setTimeout call

希望这有帮助!