<body>
<img id="img" src="clock60.png" retry="0" onerror="errorImg(this)" />
<script>
function errorImg(img) {
var retry= $('#img').attr("retry");
if(retry>0)
{
$('#img').src="1.png";
}
else
{
retry = retry++;
$('#img').attr("retry",retry);
var sourceSrc=$('#img').src;
$('#img').src=null;
$('#img').src=sourceSrc;
}
</script>
</body>
先贴出正确的做法:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="http://cdn.bootcss.com/jquery/2.1.0-beta3/jquery.min.js"></script>
</head>
<body>
<img id="img" src="clock60.png" retry="0" >
<script>
$(function() {
$('#img').on('error', function() {
var retry= $('#img').attr("retry");
if (retry > 0) {
$('#img').attr('src', 'https://iustudio.science/images/srpr/logo11w.png');
} else {
retry++;
$('#img').attr("retry", retry);
$('#img').attr('src', $('#img').attr('src'));
}
});
})
</script>
</body>
</html>
你里面还有一个有点大的坑,就是这里:
retry = retry++;
其结果并没有实现加1,还是保留是原值 0.
另外还有jquery 和 js 操作原始dom想混淆的地方。
$('#img').src
要么 $('#img')[0].src
要么 $('#img').attr('src')
不知道你用的是不是jquery。
如果是jquery的话,设置属性值的应该是$("img").attr("src",sourceSrc);.你的语法我好像还没见过。。。
function errorImg(img) {
var _this=$(img);
var retry= _this.attr("retry");
if(retry>0){
_this.attr("src","1.png");
}else{
retry = retry++;
_this.attr("retry",retry)
.attr("src",_this.attr("src"));
}
}