函数setTimeout抛出错误

Mar*_*cus 0 javascript variables settimeout

我的setTimeout函数有问题.这是代码:

1   var urlArray = ["pic1.gif"; "pic2.gif"]

2   function changeBackground(elementId, backgroundImage){
3       document.getElementById(elementId).style.background="url("+backgroundImage+")";
4   }

5   function mouseover_1(elementId){
6           changeBackground(elementId,urlArray[0]);
7           setTimeout("changeBackground(elementId,urlArray[1])",300);
8   }
Run Code Online (Sandbox Code Playgroud)

并在身体:

<area shape="rect" coords="0,0,95,91" onMouseOver="mouseover_1('navigator_1')">
Run Code Online (Sandbox Code Playgroud)

现在,Javascript代码中的第6行就像一个魅力(图片更改!),但第7行不起作用(没有图片更改).这是Firefox中调试的错误:

elementId is not defined  line: 7
Run Code Online (Sandbox Code Playgroud)

但是由于第6行有效,我真的不知道问题是什么.你有什么建议吗?

Jam*_*lin 5

如果将字符串传递给setTimeout,则不会在函数的上下文中计算字符串(因此elementId不存在).

你应该使用一个闭包:

setTimeout(function()
{
    changeBackground(elementId, urlArray[1]);

}, 300);
Run Code Online (Sandbox Code Playgroud)