0

首先,我在加载图像时调用函数 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

4

2 回答 2

3

尝试更改reloadImage1为:

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

检查这个演示:http: //jsfiddle.net/MrATK/

于 2012-11-03T09:42:20.100 回答
2

在您的代码中:

> function reloadImage1(img,isrc) {

imgsrc是函数的局部变量。

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

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

  setTimeout(function() {reloadImage2(img,isrc);}, 2000);
于 2012-11-03T09:45:36.810 回答