倒计时多次调用出现多个倒计时
我封装的代码:
function CountDown() {var maxtime = 120;
var timer = setInterval(function () {
maxtime--;
var minutes = Math.floor(maxtime / 60);
var seconds = Math.floor(maxtime % 60);
if (minutes >= 0) {
var msg = "倒计时: " + '0' + minutes + "分" + seconds + "秒";
$('.del-time').html(msg);
} else {
clearInterval(timer);
}
},1000);
}
第一次触发都很正常,再次触发就会有两个时间在交替显示。我估计是maxtime没有释放掉,但我不能刷新页面,所以maxtime一直被定时器调用,调用一次CountDown,就会创建一个maxtime,该怎么办啊。
回答
var CountDownHelper = { timer:null,
do:function(){
var that = this;
that.timer&&clearInterval(that.timer);
var maxtime = 120;
that.timer= setInterval(function () {
maxtime--;
var minutes = Math.floor(maxtime / 60);
var seconds = Math.floor(maxtime % 60);
if (minutes >= 0) {
var msg = "倒计时: " + '0' + minutes + "分" + seconds + "秒";
$('.del-time').html(msg);
} else {
clearInterval(that.timer);
}
},1000);
}
};
//调用这个方法,在每次do的时候清除掉上一次创建的定时器
CountDownHelper.do();
function CountDown() { var maxtime = 120;
var timer = setInterval(function () {
maxtime--;
var minutes = Math.floor(maxtime / 60);
var seconds = Math.floor(maxtime % 60);
if (minutes >= 0) {
var msg = "倒计时: " + '0' + minutes + "分" + seconds + "秒";
$('.del-time').html(msg);
} else {
clearInterval(timer);
}
},1000);
// 新增
return timer;
}
// 第一次使用
var timer = CountDown();
// 再次使用
clearInterval(timer);
timer = CountDown();
以上是 倒计时多次调用出现多个倒计时 的全部内容, 来源链接: utcz.com/a/66540.html