Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript动态更改图像src_Javascript_Html_Image_Onerror - Fatal编程技术网

使用Javascript动态更改图像src

使用Javascript动态更改图像src,javascript,html,image,onerror,Javascript,Html,Image,Onerror,如果加载页面时图片出现问题,我会尝试更改一些img标记的src。我似乎得到一些随机行为,特别是从InternetExplorer9。有些图像正确显示替换的图像,有些图像上有一个红十字。如果我在浏览器中调试,我会被告知未定义ImgError()。它在代码中有明确的定义,显然是有效的。为什么会这样 <div class="PhotoBorder"><img alt="" onerror="imgError(this)" src="./images/services/69_

如果加载页面时图片出现问题,我会尝试更改一些
img
标记的
src
。我似乎得到一些随机行为,特别是从InternetExplorer9。有些图像正确显示替换的图像,有些图像上有一个红十字。如果我在浏览器中调试,我会被告知未定义
ImgError()
。它在代码中有明确的定义,显然是有效的。为什么会这样

<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>

$(窗口)。加载(函数(){
$('.RowWrapper')。每个(函数(){
var TotalWidth=0;
$(this).find('.StaffMember').each(function(){
TotalWidth=TotalWidth+$(此).outerWidth(真);
});
this.style.width=TotalWidth+“px”;
});
});
函数imgError(img)
{ 
setAttribute(“src”,“/images/services/49_ImgMissing.jpg”);
img.removeAttribute(“onerror”);
}     

为图像元素指定一个id,然后尝试以下操作:

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

首先,如果您得到的错误是未定义
ImgError()
,那是因为您的函数名是
ImgError
,而不是
ImgError()


但是,如果这是你问题中的一个输入错误,那么你可能会得到错误
imgError()在某些情况下未定义
,因为可能是从缓存中请求图像,并且它的错误处理程序会立即触发-即,在解析文档的其余部分之前,这意味着您的
imgError
函数尚不可用。要修复它,只需将您的
imgError
函数放在文档头部的脚本标记中。

我代表RobG回答。imgError()的定义在下面的代码中被调用的地方。您必须将代码定义放在html中调用的位置之上。否则,我发现您的结果可能未定义。

无法使用ID,因为有许多图像。代码设计用于每个单独的代码。您使用jquery吗?@jp310我认为他使用的是基于脚本代码的jquery,或者您可以尝试:$(“.your_class”).attr(“src”,“your_src”);正如您所看到的,我在代码中使用jQuery,但不是为了这个。我只需使用onError属性调用ImgError()函数.TotalWidth.toString()+“px”;定义ImgError的脚本必须位于调用它的任何代码之前。HTML是按顺序解析和“执行”的。这与jQuery有什么关系?@RobG你的建议似乎有效。请提交一个答案,我会标记为正确。是的,那只是问题中的一个输入错误。哇,真的吗?我正在使用一个内容管理系统。我无法访问页面的标题部分。这不是document.ready甚至window.load的全部要点吗??文档应该已经准备好处理。@PaulMatthews-您的代码的哪一部分与
$(窗口)有关。加载
?当请求图像时出错,OneError属性将激发。这可能是立即的,也可能是延迟之后的。此外,您的
imgError()
函数不在任何
$(窗口)内。加载
(这并不是说它会有什么不同)。