2 回答
![?](http://img1.sycdn.imooc.com/5458502c00012d4a02200220-100-100.jpg)
TA贡献1895条经验 获得超3个赞
将间隔计时器分配给全局变量,并在启动新计时器时停止旧计时器。
var timer;
function fcc(cc) {
clearInterval(timer);
timer = setInterval(function() {
alert(cc);
}, 3000);
}
![?](http://img1.sycdn.imooc.com/533e4d510001c2ad02000200-100-100.jpg)
TA贡献1811条经验 获得超6个赞
您应该在开始新间隔之前清除间隔
ES6:
{
let interval;
function fcc(cc) {
clearInterval(interval);
interval = setInterval(fcc.callback.bind({}, [cc]), 1000);
}
window.fcc = fcc;
}
fcc.callback = function myAlert(m) {
console.log(m)
}
<input type="button" name="ch" value="a" onclick="fcc('a')" /><br>
<input type="button" name="ch" value="b" onclick="fcc('b')" /><br>
<input type="button" name="ch" value="c" onclick="fcc('c')" /><br>
或搭配ES5
function _fcc() {
var interval;
return function (m) {
clearInterval(interval)
interval = setInterval(fcc.callback.bind({}, [m]), 1000);
}
}
fcc = _fcc();
fcc.callback = function myAlert(m) {
console.log(m)
}
<input type="button" name="ch" value="a" onclick="fcc('a')" /><br>
<input type="button" name="ch" value="b" onclick="fcc('b')" /><br>
<input type="button" name="ch" value="c" onclick="fcc('c')" /><br>
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报