javascript - setInterval () 的一点问题,为什么里面的i一直没有增加!我想用setinterval 做一个倒计时 该怎么做?
迷茫
迷茫 2017-04-11 11:33:15
[JavaScript讨论组]

i 打印一直是1?

var iniTime=4;
setInterval(function(){
 var    i=0;
    if(i>iniTime){
        console.log("ok")
    }
    else{
        i++;
        console.log(i);
    }
},1000);
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(6)
大家讲道理
// el 显示倒计时的元素
// max 倒计时最大值
// callback,完成一次倒计时的回调
function timer(el, max, callback) {

    el.innerText = max + 's, 后重新发送';

    if(max === 0) {
        callback();
        return;
    }

    setTimeout(function() {
        timer(el, max - 1, callback);
    }, 1000);
}
巴扎黑

醉了,你一开始就让i为0了,i++之后当然为1,因为你的i是局部变量,想有效也要把i跟iniTime在同一个地方声明。

阿神

把var i=0;写在计时器外面啊...你现在每次运行函数首先i就等于0

黄舟

你的var i = 0;的位置有问题。
每次执行都重新赋值为0了。
var iniTime = 4,i = 0;
就OK

黄舟

这么写,

var iniTime=4;
var i = 0;
setInterval(function(){
    if(i>iniTime){
        console.log("ok")
    }
    else{
        i++;
        console.log(i);
    }
},1000);

方法内部的变量在每次方法执行的时候都会被重新赋值!!!

迷茫

随便写了一个:

function *time() {
    yield 4;
    yield 3;
    yield 2;
    yield 1;
    return("ok");
}
let timeSet = time();
let timer = setInterval(function(){
    console.log(timeSet.next().value);
},1000);
let timerClear = setTimeout(function(){
    clearInterval(timer);
},5500);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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