為什么把setInterval放到clock函數中就不能繼續調用呢如下
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計時器</title>
<script type="text/javascript">
??
? ?function clock(){
? ? ? var time=new Date(); ? ? ? ? ? ? ? ?
? ? ? document.getElementById("clck").value = time;
? ? ? ?i=setInterval(clock,1000);
? ?}
? ?var i=setInterval(clock,1000);
</script>
</head>
<body>
? <form>
? ? <input type="text" id="clck" size="50" ?/>
? ? <input type="button" value="start" onclick="clock()"/>
? ? <input type="button" value="Stop" onclick="clearInterval(i)" />
? </form>
</body>
</html>
2018-07-18
還有如果你非要把?var i=setInterval(clock,1000);放到clock()函數中,會導致clock()函數遞歸,系統會每隔1秒調用1次clock()函數并生成一次計時器。。。所以你點了stop鍵也沒用,但是如果你的手速足夠快,1秒鐘內點擊2次以上吧,會發現計時器能夠停止計時。。。。如果點慢了,則遞歸函數會重新生成計時器并刷新時間。
2018-07-18
不好意思,我弄錯了。下一節里面會講到這種用法,涉及到遞歸。
你這里之所以運行不出來,是因為html中程序是從上往下運行的,文檔一開始先加載上面的JavaScript文件,這時body標簽中的input里的內容都沒有加載完成,而你的寫法中JavaScript里 document.getElementById("clck").value = time;這一句含有input標簽的id “clck”,因為"clck"還沒有定義,所以系統無法識別。
解決方式是使用window.onload=function(){你的js代碼};功能是文檔內容加載完成之后,再最后加載你的js代碼,這樣系統就能夠識別你的id“clck”了。
另外你的函數中i沒有聲明,函數外面的i卻聲明了,有點混亂。
2018-07-18
仔細看一下setInterval()的兩種用法:
第一種:setInterval(clock,1000);
第二種:setInterval(“clock()”,1000);
如果你把setInterval(clock,1000)放到clock()函數里面,那么這里函數clock()還沒有定義完成,系統無法識別setInterval(clock,1000)中的clock是什么東西,故無法運行。
2018-07-03
語法不支持