為了說明問題,代碼很短
<script> var test = function(){ console.log('a') } timer1 = setInterval(test(), 1000) timer2 = setInterval(console.log('b'), 1000) </script>
上面的兩個定時器中都只執行了一次,並沒有重復執行。
解決方案一:
函數名不要叫括號
var test = function(){ console.log('a') } timer1 = setInterval(test, 1000)
解決方案二:
在執行的函數用引號括起來(里面使用單引號,則外面用雙引號)
var test = function(){ console.log('a') } timer1 = setInterval("test()", 1000) timer2 = setInterval("console.log('b')", 1000)
使用場景,當重復執行的函數需要傳入參數,傳入的參數有肯能隨時變動,只能用方案二的方法來解決。
var test = function(num){ console.log(num) } num = 10 timer1 = setInterval("test(num)", 1000) timer2 = setInterval(function(){num++}, 2000)
我遇到的問題,是定時器寫法上出錯了,我的定時器有參數,
function setquarz2(num){
setInterval("tellyou2("+num+")", 60000);
}
這是正確寫法,
但是我一開始寫的是下面這樣的,找不到num變量值了,自然就報錯了,就執行一次,或者根本不執行了
function setquarz2(num){
setInterval("tellyou2(num)", 60000);
}