2014-03-31 57 views
1

如果/當加載頁面時出現圖片問題,我正在嘗試更改img標籤的src標籤。我似乎從Internet Explorer 9中獲得了一些隨機行爲,其中一些圖像正確顯示替換後的圖像,一些圖像上有紅色十字。如果我在瀏覽器中調試,我會被告知ImgError()未被定義。它在代碼中有明確的定義,顯然是有效的。這是爲什麼發生?用Javascript更改圖片src

<div class="PhotoBorder"><img alt="" onerror="imgError(this)" 
    src="./images/services/69_Staffmember.jpg" /></div> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">   
    </script> 

<script> 
$(window).load(function() { 
    $('.RowWrapper').each(function() { 
     var TotalWidth = 0; 
     $(this).find('.StaffMember').each(function() { 
      TotalWidth = TotalWidth + $(this).outerWidth(true);  
     }); 
     this.style.width = TotalWidth + "px";   
    }); 
}); 

function imgError(img) 
{ 
    img.setAttribute("src","./images/services/49_ImgMissing.jpg"); 
    img.removeAttribute("onerror"); 
}  

</script> 
+0

其中IE版本 –

+0

TotalWidth.toString()+「px」; –

+0

對不起,IE版本9。 –

回答

0

我代表RobG回答。 imgError()的定義低於它在我的代碼中被調用的地方。您必須將您的代碼定義放在您在html中調用的位置的上方。否則你的結果可能是不確定的,因爲我發現了。

-1

給你的圖像元素的ID和嘗試這個辦法:

document.getElementById("imageid").src="./images/services/49_ImgMissing.jpg"; 
+0

由於有許多圖像,無法使用ID。該代碼旨在爲每個人工作。 –

+0

你使用jQuery嗎? – pj013

+0

@ jp310我認爲他使用的是基於腳本代碼 – s4m0k

1

首先,如果你得到ImgError() is not defined那是因爲你的函數名imgError,不ImgError()錯誤。

但是,如果這是您的問題中的拼寫錯誤,那麼有可能在某些點出現錯誤imgError() is not defined,因爲機會是從緩存中請求映像,並且它的錯誤處理程序正在瞬間觸發 - 即在文檔的其餘部分已解析,這意味着您的imgError功能尚未可用。要修復它,只需將imgError函數放置在文檔頭部的腳本標記中即可。

+0

是的,這只是一個錯字在問題中。 –

+0

哇,認真嗎?我正在使用內容管理系統。我無法訪問頁面的頭部部分。 –

+0

是不是document.ready甚至window.load的整個點?該文件應該已經準備好了。 –