0

我有这样的事情:

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 有点陌生,如果我的问题很愚蠢,我很抱歉。

4

3 回答 3

6

设置超时

 setTimeout(function(){ isAnimating = 'no' },30000);
于 2013-09-10T13:20:12.517 回答
6

你需要传递一个回调函数

setTimeout(function(){
    isAnimating = 'no'
},30000);
于 2013-09-10T13:20:23.757 回答
1

setTimeout 的第一个参数是一段你想在指定的时间过去后运行的代码。在 Javascript 中,可执行代码单元必须作为函数传递,因此您需要创建一个函数来执行您在 30 年代想做的任何事情。

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

您还可以简单地传递函数的名称(不带括号)使其在超时后执行,如下所示:

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

此外,请确保 isAnimating 是全局的,如果您希望使用此方法在对象上设置局部变量,则需要某种方法从全局范围访问它。查看此问答以获取有关范围和闭包的更多信息:如何在 setTimeout 调用中解决 Var 超出范围的问题

希望这可以帮助!

于 2013-09-10T13:24:34.747 回答