請同學幫我看看這是哪里錯了。一個小計時器。運用clearInterval()無法停止循環。
<!DOCTYPE??HTML>
<html?>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/>
<title>系好安全帶,準備啟航</title>
<script?type="text/javascript">
function?kaishi()
{
?var?time=new?Date();
?document.getElementById("in").value=time;
?setInterval("kaishi()",1000);??
?}?
function?jieshu()
{?
?clearInterval("kaishi()")?
?}?
</script>
</head>
<body>
<form>
<input?type="text"?id="in"?size="50px"?/>
<br/>
<input?type="button"?value="點擊開始計時"?onClick="kaishi()">
<input?type="button"?value="點擊停止計時"?onClick="jieshu()">
</form>
</body>
</html>我做的這個有兩個按鈕,點擊第一個,開始每秒刷新計時器。點擊第二個,停止刷新計時器。
第一個沒問題,第二個怎么也停不下來。還有,一下電腦內存占得特別高,卡住了,什么原因?
唉,現在每節課都得提問題,每節課都得遇到挫折。好難呀!
2016-04-28
clearInterval的參數是setInterval的返回值。所以正確用法i=setInterval("kaishi()",1000);?clearInterval(i)?
要區分setInterval與setTimeout,前者每單位秒進行一次調用,后者延遲單位秒后調用一次,所以,你用setInterval還自調用,每新的一秒,原有計時器調用函數加新計時器,新來的計時器也要調用函數加計時器,每一秒都在加大量計時器,大量占用內存,當然卡住了。
仔細看參數用法,少走彎路,每節課都有問題是好事,現在發現的問題越多,學到的就越多,每個問題都能延伸出很多小細節知識點。
下面放修正過的代碼
<!DOCTYPE ?HTML>
<html >
<head>
? ?<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
? ?<title>系好安全帶,準備啟航</title>
? ?<script type="text/javascript">
? ? ? ?function kaishi()
? ? ? ?{
? ? ? ? ? ?var time=new Date();
? ? ? ? ? ?document.getElementById("in").value=time;
? ? ? ?}
? ? ? ?i=setInterval("kaishi()",1000);
? ? ? ?function jieshu()
? ? ? ?{
? ? ? ? ? ?clearInterval(i)
? ? ? ?}
? ?</script>
</head>
<body>
<form>
? ?<input type="text" id="in" size="50px" />
? ?<br/>
? ?<input type="button" value="點擊開始計時" onClick="kaishi();">
? ?<input type="button" value="點擊停止計時" onClick="jieshu()">
</form>
</body>
</html>
2016-04-28
樓上說的好仔細!給一百個贊