javascript - 关于定时器里面n次数不增加怎么办
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-12 09:32:09
[JavaScript讨论组]

里面的n次数不增加不知道是什么原因,还有就是执行了三次以后怎么清除执行。

var firstShow = 1000;
var secondShow = 5000;
var threeShow = 10000;

setTimeout(openMpM, firstShow);
function openMpM() {
    $("#swtCenter2").fadeIn(1000);
}

var n = 0;
function closeM(n) {
    $("#swtCenter2").fadeOut(1000);
    setTimeout(openMpM, 50000);
    n = n++;
    if (n == 1) {
        setTimeout(openMpM, secondShow);
    }
    if (n == 2) {
        setTimeout(openMpM, threeShow);
    }
    if (n == 3) {
        clearTimeout();
    }
}
曾经蜡笔没有小新
曾经蜡笔没有小新

全部回复(3)
代言

绑定事件里面先n++再执行closeM(n),closeM(n)里面的n=n++要去掉。

    $("#swtCenter2").on('click',function(){
            n=n+1
            closeM(n)
        });

第三次直接if (n==3) {$("#swtCenter2").fadeOut(1000);}就行了
或者这样

        var n=0;
        function closeM() {
        $("#swtCenter2").fadeOut(1000);
        n=n+1;
        return function (n){
            console.log(n)
            if(n==1){setTimeout(openMpM,secondShow);
            }
            if(n==2){setTimeout(openMpM,threeShow);
            }
            if(n==3){$("#swtCenter2").fadeOut(1000);}}
        }
        $("#swtCenter2").on('click',function(){
            closeM()(n);
        });
高洛峰

其实你这个思路基本上已经很清楚了,只是在细节上还有点逻辑不清。比如 setTimeout(openMpM, 50000); 这句话会在每次 closeM() 的时候执行,与 n 值无关。

另外 n = n++ 不会改变 n 值,它相当于

var t = n;
n++;
n = t;

下面是我修改后的代码,这个问题和你另外问的那个是同一个,我就不去那边回答了。

var firstShow = 1000;
var secondShow = 5000;
var threeShow = 10000;

// 定义成数组,便于按序号取用
var showTimes = [firstShow, secondShow, threeShow];

setTimeout(openMpM, firstShow);
function openMpM() {
    $("#swtCenter2").fadeIn(1000);
}

var n = 0;
function closeM(n) {
    $("#swtCenter2").fadeOut(1000);

    // 取出需要等待的时间,并 n + 1
    // 你用的 n = n++ 实际并不会改变 n 值
    var time = showTimes[n++];

    if (!time) {
        // 未取到 time 值,说明 3 个时间已用完
        // 重置 n 并且不再延时打开
        n = 0;
    } else {
        setTimeout(openMpM, time);
    }
}
大家讲道理

n = n++;
由於n算符優先級,所以n沒有改變
所以應該直接 ++n;

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号