javascript ReferenceError

时间:2012-11-03 09:39:32

标签: javascript settimeout

首先,我按照以下方式调用函数reloadImage1:

<img src="loading.gif" onload="reloadImage1(this,'newphoto.jpg')">

这是reloadImage1:

function reloadImage1(img,isrc)
{
    setTimeout("reloadImage2(img,isrc)",2000);
}

这是reloadImage2:

function reloadImage2(img,isrc)
{
    img.removeAttribute("onload");
    img.src = isrc;
}

执行reloadImage1时出现以下错误消息:

ReferenceError: img is not defined

2 个答案:

答案 0 :(得分:3)

尝试将reloadImage1更改为:

function reloadImage1(img, isrc) {
    setTimeout(function() {
        reloadImage2(img, isrc);
    }, 2000);
}

选中演示http://jsfiddle.net/MrATK/

答案 1 :(得分:2)

在您的代码中:

> function reloadImage1(img,isrc) {

img src 是函数的局部变量。

>     setTimeout("reloadImage2(img,isrc)",2000);
> }

将字符串传递给setTimeout时,它在全局上下文中执行,它无法访问函数中的变量 img src 。而是将具有闭包的函数传递给原始函数上下文,例如:

  setTimeout(function() {reloadImage2(img,isrc);}, 2000);