javascript - 循环setTimeout最后一个元素的问题
PHP中文网
PHP中文网 2017-04-11 12:35:03
[JavaScript讨论组]

我想循环一个定时器 从0到9,但是再次调用的时候9却和0同时出现我想知道怎么解决

function move(){
        for (var i = 0; i < 10; i++) {
            setTimeout(function(i){
                console.log(i);
                if (i == 9) {
                    i = 0;
                    move()
                }
            },i*1000,i)
        }
    };
    move();
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(4)
黄舟
    function move(){
        for (var i = 0; i < 10; i++) {
            setTimeout(function(i){
                console.log(i);
                if(i==9){
                    setTimeout(function(){
                        move()
                    },1000)
                }
            },i*1000,i)
        }
    };
    move();
天蓬老师
function move(){
        for (var i = 0; i < 10; i++) {
            setTimeout(function(i){
                console.log(i);
                if (i == 9) {
                    i = 0;
                    move();
                }
            },(i + 1) *1000,i); // 调个 时间 实参 就好 了~~~
        }
    };
    move();
迷茫

你的i==9时,i=0归0了- -后面的时间i*1000直接变成0了 所以9和0一起出来了

上面的修改方法我就不说了- -还可以换个写法:

<p id="show-time"></p>
    var clock = 0,
        t;

    function time() {
        document.getElementById('show-time').innerText = clock;
        if (clock < 9) {
            clock++;
        } else if (clock === 9) {
            clock = 0;
        }
        t = setTimeout(arguments.callee, 1000);
    }
    time();
PHP中文网

如果是 for 内使用 setTimeout 太浪费内存了。

我秀一个闭包的写法:

var move = function() {
    var digit, COUNT;

    function show() {
        console.log(digit);
        setTimeout(function() {
            ++digit;
            digit = digit >= COUNT ? 0 : digit;
            show();
        }, 1000);
    }
    return function(count) {
        COUNT = count;
        digit = 0;
        show();
    }
}()
move(10);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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