如何解決計時器中點擊一次增加1s問題
<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
<title>計時器</title>
<script?type="text/javascript">
??var?num=0;
??var?i;
??function?startCount(){
?????clearTimeout(i);?
????document.getElementById('count').value=num;
????num=num+1;
????i=setTimeout("startCount()",1000);
??}
??
??function?stopCount(){
????clearTimeout(i);
??}
</script>
</head>
<body>
??<form>
????<input?type="text"?id="count"?/>
????<input?type="button"?value="Start"?onclick="startCount()"?/>
????<input?type="button"?value="Stop"???onclick="stopCount()"/>
??</form>
</body>
</html>雖然增加了clearTimeout(i);以后解決了數字飆升的問題,但是還存在點一次增加1的問題,有沒有大神能解決這個問題?
2017-06-29
你的startCount()函數有問題啊,正確的如下,你的cleanTimeout(i)了.
function?startCount(){ ????document.getElementById('count').value=num; ????num=num+1; ????i=setTimeout("startCount()",1000); ??}2017-08-01
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計時器</title>
<script type="text/javascript">
? var num=0;
? var i;
? var flag=false;
??
//增加一個布爾變量用于存儲值代表start是否開始
//這個方法要置于循環體外
? function flag1(){
? ? if(flag==false){
? ? ? ?startCount();
? ? ? ?flag=true;
? ? }else{
? ? ? ?return 0;
? ? }
? }
? function startCount(){
? ? document.getElementById('count').value=num;
? ? num=num+1;
? ? i=setTimeout("startCount()",1000);
? }
? function stopCount(){
? ? clearTimeout(i);
? ? flag=false;
? }
</script>
</head>
<body>
? <form>
? ? <input type="text" id="count" />
? ? <input type="button" value="Start" onclick="flag1()" />
? ? <input type="button" value="Stop" onclick="stopCount()" ?/>
? </form>
</body>
</html>
增加一個開關裝置即可。解決了點一次start增快一次速度和num+1的問題。
2017-06-29
startCount() 的 cleanTimeout(i) 破壞了循環. 不要這句就好了.