Javascript 简单setInterval函数中的SyntaxError

Javascript 简单setInterval函数中的SyntaxError,javascript,setinterval,Javascript,Setinterval,我想在2秒钟的循环中开始更改鼠标上方div的背景色 因此,html代码: <div onmousemove="start_loop(this)"></div> 但我有一个错误: SyntaxError: missing ] after element list start_loop([object HTMLDivElement]) theDiv不是一个字符串,它是一个DOM元素,所以使用字符串连接不会有任何用处。尝试: var ms; function start

我想在2秒钟的循环中开始更改鼠标上方div的背景色 因此,html代码:

<div onmousemove="start_loop(this)"></div>
但我有一个错误:

SyntaxError: missing ] after element list

start_loop([object HTMLDivElement])

theDiv
不是一个字符串,它是一个DOM元素,所以使用字符串连接不会有任何用处。尝试:

var ms;

function start_loop(theDiv) {
    if (!ms) {
        ms = setInterval(function() {
            changeBg(theDiv);
            }, 2000);
    }
}

你可以在setInterval中使用匿名函数,就是这样

functionstart_loop(param){
//some code
}

 ms=setInterval( function() { loop(param) }, 2000);

这就是为什么要将函数引用或匿名函数传递给
setInterval()
,而不是传递包含JavaScript的字符串。谢谢Barmar,现在可以了,但我遇到了另一个问题,每次鼠标移动到div上时,我都有多个间隔在执行相同的任务,因此如何在创建之前检查间隔是否不存在?看起来解决方案非常明显,但是我更新了答案以显示它。我在询问之前尝试过,但我得到了ReferenceError:ms未定义尝试使用
var ms=null
初始化它。
functionstart_loop(param){
//some code
}

 ms=setInterval( function() { loop(param) }, 2000);