2014-03-31 143 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的整个点?该文件应该已经准备好了。 –