關于此任務遇到的問題如何優化一下:任務 補充右邊編輯器第16行,完成取消計時器函數。 補充右邊編輯器第23行,點擊Start按鈕后,開始計數。 補充右邊編輯器第24行,點擊Stop按鈕后,停止計數。
代碼如下,如何解決我點擊兩次start按鈕他就速度加倍(可能不止一倍)了,點擊多次根本停不下來,stop就沒用了
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計時器</title>
</head>
<script type="text/javascript">
? var num=0;
? var i;
? function startCount(){
? ? 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>
2016-09-14
? var num=0;
? var i;
? function startCount(){
? ? document.getElementById('count').value=num;
? ? num=num+1;
? ? i=setTimeout("startCount()",1000);
? ? document.getElementById('start').onclick=null;
? ??
? }
? function stopCount(){
? ? clearTimeout(i);
? ? document.getElementById('start').onclick=function(){startCount();}
? }
動態修改onclick的值,點擊start后將start的onclick事件設置為空,點擊stop后將start的onclick重新設置為startcount。目前沒發現其他問題,請大神檢查
2016-09-11
做的時候還真沒發現這個問題,你可在每次調用的時候
? function startCount(){
?? clearTimeout(i);//在每次調用這個函數的時候的時候都把setTimeout給暫停了,然后代碼還會按照順序執行
? ? document.getElementById('count').value=num;
? ? num=num+1;
? ? i=setTimeout("startCount()",1000);
? }
我也是剛剛學,說的不一定對,不過這樣是可以完成的,但是每一次點擊都會加一。這個問題留給大神吧