計時器問題
?var attime;
? function onclock(){
? ? var time=new Date(); ? ? ? ? ?
? ? attime=time.getHours()+"時"+time.getMinutes()+"分"+time.getSeconds()+"秒" ;
? ? document.getElementById("clock").value = attime;
? }
? ?var int=setInterval(onclock(),1000);
為什么一直不停閃爍!
2016-03-25
用錯了,應(yīng)該這樣寫setInterval(onclock,1000);
不能這樣寫:setInterval(onclock(),1000);這樣寫根本就沒把onclock函數(shù)傳給setInterval,而是執(zhí)行了一遍onclock,將執(zhí)行的結(jié)果傳給setInterval,
舉個栗子:
var attime;
? ? ? ? function abc() {
? ? ? ? ? ? return function onclock() {
? ? ? ? ? ? ? ? var time = new Date();
? ? ? ? ? ? ? ? attime = time.getHours() + "時" + time.getMinutes() + "分" + time.getSeconds() + "秒";
? ? ? ? ? ? ? ? document.getElementById("clock").value = attime;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? var int = setInterval(abc(), 1000);
從結(jié)果可看出是先執(zhí)行bac(),得到返回值onclock,然后在執(zhí)行setInterval.........
onclock是函數(shù)本身,onclock();是執(zhí)行函數(shù)的語句,不能混淆。。。。
所以參數(shù)是函數(shù)的時候不要順手加括號
最后,解釋一下不停閃爍的原因,只能說是被穆課網(wǎng)站的緩存影響了
2016-03-25
樓上正解
2016-03-25
不停的閃爍?setInterval(onclock(),1000) 就是每1000ms(也就是一秒)調(diào)用一次onclock() 啊,而且是一直下去,你要停下來的話就?var int=setInterval(onclock(),1000); 在 body里面加按鈕取消計時器 <input type="button" value="Stop" onclick="clearInterval(int)" ?/> 或者用另外一個只執(zhí)行一次的計時器 setTimeout()
2016-03-25
定義bian liang mei you yong
2016-03-25
var int=setInterval(onclock(),1000);
這個代碼錯了。
setInterval(onclock(),1000);
這句代碼的意思是在一秒后,執(zhí)行onclock()。前面的那些根本不需要