有的网友在刚刚入门学习setTimeout这个函数时,往往会拿一些例子进行测试,比如:
<script type="text/javascript">
var num=0;
function numCount(){
document.getElementById('txt').value=num;
num=num+1;
setTimeout("numCount()",1000);
}
</script>
<pre class="html" name="code"><form>
<input type="text" id="txt" />
<input type="button" value="Start" onClick="numCount()" />
</form>
这样写会产生的一个后果就是:随着点击次数的增加,数字变化的速率会越来越快,因为你的事件正在一次次覆盖执行。这时不妨对点击事件进行下限制:
window.onload = function(){
var num=0;
var cishu = 0;//判断函数执行次数
document.getElementById('start').onclick = function(){
++ cishu;
if (cishu < 2) {
startCount();
}
}
function startCount() {
document.getElementById('count').value = num;
num=num+1;
setTimeout(startCount, 1000);
}
}
在与clearTimeout结合时,也可以对其进行制约:
window.onload = function(){
var num=0;
var cishu1 = 0;//判断start点击函数执行次数
var cishu2 = 1;//判断stop点击函数执行次数
var i;//用来传递setTimeout
document.getElementById('start').onclick = function(){
cishu2 = 0;
if (cishu1 == cishu2) {
startCount();
}
++ cishu1;
}
function startCount() {
document.getElementById('count').value = num;
num=num+1;
i = setTimeout(startCount, 1000);
}
document.getElementById('stop').onclick = function(){
cishu1 = 0;
if (cishu1 == cishu2) {
clearTimeout(i);
}
++ cishu2;
}
}
(ps:本人也在学习中,如上述代码有bug或者更简单的方式,欢迎批评指教)