Javascript定时器只能执行一次
为了说明问题,代码很短
<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)