繁体   English   中英

setTimeout()不会触发该函数

[英]setTimeout() won't trigger the function

我试图用包含不同整数的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不会再次触发函数

您的first_picslide函数中的局部变量。 这意味着每次调用slide ,都会得到一个新的first_pic变量。 您的fadeOut回调将更新first_pic ,这是它的关闭,但setTimeout调用的slide将获得其自己的first_pic 如果要对slide每次执行使用相同的first_pic ,则必须将其设置为全局,或使其值与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();

实时版本: http//jsfiddle.net/ambiguous/Ntqjh/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM