Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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 如何拥有两个回退图像占位符_Javascript_Html - Fatal编程技术网

Javascript 如何拥有两个回退图像占位符

Javascript 如何拥有两个回退图像占位符,javascript,html,Javascript,Html,这非常适用于填充占位符来代替不存在的图像 我好奇的是,是否有一种方法可以在OneError事件中执行两个占位符。所以我试着这么做,但是Javascript没有出现。有什么想法吗?我尝试将url分配给变量,但我不确定如何检查第一个占位符是否失败,而不执行一些混乱的xhr请求或其他操作。检查当前的src是否等于一个占位符,并相应地分配一个新的url: onerror=” 变量p1=http://.......“,p2=”http://......'; 如果(this.src==p1)this.

这非常适用于填充占位符来代替不存在的图像



我好奇的是,是否有一种方法可以在OneError事件中执行两个占位符。所以我试着这么做,但是Javascript没有出现。有什么想法吗?我尝试将url分配给变量,但我不确定如何检查第一个占位符是否失败,而不执行一些混乱的xhr请求或其他操作。

检查当前的
src
是否等于一个占位符,并相应地分配一个新的url:

onerror=”
变量p1=http://.......“,p2=”http://......'; 
如果(this.src==p1)this.src=p2;否则如果(this.src!=p2)this.src=p1;
"

检查当前的
src
是否等于一个占位符,并相应地分配一个新的url:

onerror=”
变量p1=http://.......“,p2=”http://......'; 
如果(this.src==p1)this.src=p2;否则如果(this.src!=p2)this.src=p1;
"

这里有一种通过递归事件处理实现的方法。。。尝试加载,如果出现错误,则尝试从数组中加载第一个元素,并在失败时将其设置为下一个索引出错,直到遇到超出范围的索引,此时停止

这适用于源数组中任意数量的已定义占位符

<img id="img" src="example.jpg" onerror="loadNextImage(0);" alt="logo image">
<script>
var imagesDir = 'path/to/images/directory/';
var sources = [ '01.jpg', 'test.gif', 'bamf.jpg', 'foobar.jpg' ];
var index = 0;

function loadNextImage(index) {
    var image = document.getElementById('img');
    if (index < sources.length) {
        console.log('Index:', index, sources[index]);
        image.onerror = function() { loadNextImage(index + 1); };
        image.src = imagesDir + sources[index];
    } else {
        image.alt = 'No suitable image found to display';
    }
}
</script>

var imagesDir='path/to/images/directory/';
var sources=['01.jpg','test.gif','bamf.jpg','foobar.jpg'];
var指数=0;
函数loadNextImage(索引){
var image=document.getElementById('img');
如果(索引
这里有一种通过递归事件处理实现的方法。。。尝试加载,如果出现错误,则尝试从数组中加载第一个元素,并在失败时将其设置为下一个索引出错,直到遇到超出范围的索引,此时停止

这适用于源数组中任意数量的已定义占位符

<img id="img" src="example.jpg" onerror="loadNextImage(0);" alt="logo image">
<script>
var imagesDir = 'path/to/images/directory/';
var sources = [ '01.jpg', 'test.gif', 'bamf.jpg', 'foobar.jpg' ];
var index = 0;

function loadNextImage(index) {
    var image = document.getElementById('img');
    if (index < sources.length) {
        console.log('Index:', index, sources[index]);
        image.onerror = function() { loadNextImage(index + 1); };
        image.src = imagesDir + sources[index];
    } else {
        image.alt = 'No suitable image found to display';
    }
}
</script>

var imagesDir='path/to/images/directory/';
var sources=['01.jpg','test.gif','bamf.jpg','foobar.jpg'];
var指数=0;
函数loadNextImage(索引){
var image=document.getElementById('img');
如果(索引
你说的“两个占位符”是什么意思?如果第一个占位符不存在,是指第二个占位符吗?您可能需要为此编写一个递归函数,以查看可能的src值数组,并在每次调用时增加索引。目前,它太宽泛了,而且你还没有发布你尝试过的代码。这样做,我们将能够进一步帮助您。啊,我喜欢使用数组的想法。我使用的代码没有任何用处,所以我没有分享它。午饭后我会带着一些代码回来,但按照你的建议,我无法让它工作。你说的“两个占位符”是什么意思?如果第一个占位符不存在,是指第二个占位符吗?您可能需要为此编写一个递归函数,以查看可能的src值数组,并在每次调用时增加索引。目前,它太宽泛了,而且你还没有发布你尝试过的代码。这样做,我们将能够进一步帮助您。啊,我喜欢使用数组的想法。我使用的代码没有任何用处,所以我没有分享它。午餐后我会带着一些代码回来,在你建议之后我无法让它工作。我选择了这个,因为它是对这个问题的更准确的答案,但是,我也非常喜欢另一个问题的答案,因为如果需要,它可以用来堆叠大量图像。我选择了这个,因为这是一个更准确的问题答案,但是,我真的很喜欢另一个问题的答案,因为如果需要,它可以用来堆叠大量的图像。