我试图用包含不同整数的first_pic变量一次又一次地在5ooo秒内触发该函数。每次运行此函数时,它会向first_pic变量添加1,显然它不起作用,请帮忙。
function slide(){
var total_pic = $("#slide_show").children().length;
var first_pic = $("#slide_show li:first-child").css('z-index',total_pic).index()+1;
$("#slide_show li:nth-child("+first_pic+")").fadeOut(4000, function(){
first_pic = first_pic + 1;
});
setTimeout(slide, 5000);
};
slide();
变量很好地添加1,但是setTimeout不会再次触发函数
答案 0 :(得分:3)
您的first_pic
是slide
函数中的局部变量。这意味着每次调用slide
时,都会获得一个新的first_pic
变量。您的fadeOut
回调会更新first_pic
它是一个关闭,但slide
调用的setTimeout
将获得自己的first_pic
。如果您希望在first_pic
的每次执行时使用相同的slide
,则必须将其设为全局,或者使用data
或Cookie使其值保持不变。
看看这个,它可能会澄清正在发生的事情:
function slide() {
var first_pic = 5;
$('#fade').fadeOut(1000, function() {
first_pic = first_pic + 1;
$('#fade').show();
$('#out').text(first_pic);
});
setTimeout(slide, 2000);
};
slide();
实时版(使用HTML):http://jsfiddle.net/ambiguous/PRaLH/
并将其与行为方式进行比较:
var first_pic = 5;
function slide() {
$('#fade').fadeOut(1000, function() {
first_pic = first_pic + 1;
$('#fade').show();
$('#out').text(first_pic);
});
setTimeout(slide, 2000);
};
slide();