『壹』 js setTimeout如何調用自身所在的函數(有參數傳遞的)
<scripttype="text/javascript">
functiontest(name,time){
alert(name);
setTimeout(function(){test(name,time);},time);//setTimeout();這里應該怎麼寫???
}
test("123",1000);
</script>
其實和setInterval這個函數的功能是一樣的
『貳』 JS中2種定時器的使用及清除的實現
定時器是在JavaScript中用來實現延時執行代碼的一種機制,由JavaScript原生提供了一些方法來實現這一功能。定時器分為兩類:一次性定時器和周期性定時器。
一次性定時器使用setTimeout方法設置,該方法會在指定的毫秒數後執行一次指定的函數或代碼段。使用方式為:var timer=setTimeout(fun,毫秒數)。清除一次性定時器的方法為clearTimeout(timeoutId),其中timeoutId為定時器的唯一標識符,是setTimeout方法執行後返回的值。在實際應用中,setTimeout可以接受一個函數作為參數,也可以接受一段代碼字元串,但後者不推薦使用,因為它會類似地使用eval()方法。
周期性定時器使用setInterval方法設置,每隔指定的毫秒數就會執行一次指定的函數或代碼段。使用方式為:var timer=setInterval(fun,毫秒數)。清除周期性定時器的方法為clearInterval(timer),其中timer為定時器的唯一標識符,同樣是setInterval方法執行後返回的值。
需要注意的是,無論是setTimeout還是setInterval,在調用時都會返回一個整形的數字,這個數字代表定時器的序號,即它是第多少個定時器。因此,要清除定時器,就需要在使用定時器的時候,定義一個變數來記錄定時器的返回值。這樣,在需要清除定時器時,就可以通過這個變數來調用對應的清除方法。
例如://setTimeout 1000ms後執行1次var test1 = setTimeout(function(){ //your codes},1000); //setInterval 每隔1000ms執行一次var test2 = setInterval(function(){ //your codes},1000)
清除定時器時:clearTimeout(test1); //清除Timeout的定時器 clearInterval(test2); //清除Interval的定時器
有時,在編寫代碼時,還習慣將清除定時器的變數置為空,這樣做的好處是既可以釋放內存,也可以便於後續代碼的判斷。