我有这样的事情:
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,所以很抱歉。答案 0 :(得分:6)
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
希望这有帮助!