2012-11-03 56 views
0

首先,我調用函數reloadImage1當圖像加載如下:的JavaScript的ReferenceError

<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

+0

你不應該將函數作爲字符串'setTimeout',使用空'函數(){}'包裝代替。 –

回答

3

嘗試改變reloadImage1到:

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

入住這演示http://jsfiddle.net/MrATK/

+0

工作正常,謝謝 – tarek

+0

@tarek那麼你應該接受你的答案:)。 –

2

在您的代碼:

> function reloadImage1(img,isrc) { 

IMGsrc是該函數的局部變量。

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

當傳遞一個字符串到setTimeout的,它在全球範圍內被執行,它沒有訪問變量IMGSRC的功能。相反,通過具有封閉到原來的功能方面的功能,例如:

setTimeout(function() {reloadImage2(img,isrc);}, 2000); 
相關問題