setTimeout的一点小问题
var c=0
var t
function timedCount()
{
document.getElementById('txt').value=c
c=c+1
t=setTimeout("timedCount()",1000)
}
<input type="button" value="开始计时!" onClick="timedCount()">
如上的代码,如果你点了两次计时按钮的话,就变成,相当于两个计时器了,c增大的速度就变快了。
但是,不是操作的同一个变量么?
为什么计时器会是这样???
[解决办法]
js中,除了基本数据类型的赋值,其它类型赋值都是地址传递,也就是你第一次调用setTimeout(),将该地址赋值给t,第二次再调用时,又产生一个计数器,这时这个计数器的地址覆盖了t,其实是有两个setTimeout在运行,你可以在页面上再加一个按钮用来清除<input id="txt" type="button" value="clear" onClick="clear()"></body>
function clear(){
cleatTimeout(t);
}
var c=0,timer;
function timedCount()
{
clearInterval(timer);//终止上一个计时器
timer=setInterval("timedCount1()",1000)
};
function timedCount1(){
document.getElementById('txt').value=c;
c=c+1;
}
var c=0//全局变量
var t
function timedCount()
{
document.getElementById('txt').value=c
c=c+1
t=setTimeout("timedCount()",1000)
}