使用新随机数刷新img src
Refresh img src with new random
var rnd = Math.round((Math.random() * (1153 - 1) + 1));
while(!IsValidImageUrl("/engine/achigen/i/"+rnd+".png"))
rnd = Math.round((Math.random() * (1153 - 1) + 1));
$("#achieve a img").attr("src", "/engine/achigen/i/"+rnd+".png");
我想在页面加载时将指定的图像替换为其他图像。我有图片1.png.1153.png,但我需要检查图片src是否有效。
function IsValidImageUrl(url) {
$("#achieve a img", {
src: url,
error: return false,
load: return true
});
}
我该怎么做?我的方式是错误的
您可以创建一个基于递归/回调的函数,该函数将重复自身,直到找到有效的URL。对于回调,使用promise模式很方便。
考虑一下这个应该起作用的例子:
function IsValidImageUrl(url, success, error) {
return $.Deferred(function () {
$("#achieve a img", {
src: url,
error: this.reject,
load: this.resolve
});
}).promise();
}
function generateImage() {
var rnd = Math.round((Math.random() * (1153 - 1) + 1));
return IsValidImageUrl("/engine/achigen/i/" + rnd + ".png").then(function() {
return "/engine/achigen/i/" + rnd + ".png";
}, generateImage);
}
generateImage().then(function(url) {
console.log('valid url', url);
});
在本例中,IsValidImageUrl
返回一个Promise对象,该对象在url有效/无效时解析或拒绝。助手generageImage
用于调用IsValidImageUrl
,直到找到有效的映像为止。
您可以通过在js中创建每个图像并侦听onload、oneror事件来实现这一点。请记住,创建1153个图像肯定会让浏览器向你吐口水。
function loadImage(i){
var img = new Image();
img.onload = function(){
// image exists, do something with it, eg.
// $('.container').append(this); or
// $("#achieve a img").attr("src", this.src);
};
img.onerror = function(){
// image does not exist, do something about it, eg.
// load another one
// var anotherRandomNumber = Math.ceil(Math.random() * 1153));
// loadImage(anotherRandomNumber);
};
img.src = "/engine/achigen/i/" + i + ".png";
}
var randomNumber = Math.ceil(Math.random() * 1153));
loadImage(randomNumber);
相关文章:
- Javascript:使用绝对路径设置img src
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 插入“;img src"在javascript中
- 从二维数组中获取img src和img维度,并在body中显示
- 在不发出请求的情况下设置img src
- Jquery/Javascript使用IF/ELSE语句更改img SRC
- 使用JQuery从包含A href值中设置*all*IMG-src值
- Django,HTML,JS:<img src=“#">可以在HTML中工作,但不能在JS文件中工作
- Img-src只通过javascript更改一次
- 正则表达式使链接可点击(仅在“href”而不是“img src”中)
- 交换 img src 或显示/隐藏多个图像是否更快
- 如果有办法在 N 秒内加载未触发,则有没有办法设置 img src
- img src 在 Firefox 和 IE 的 jQuery 脚本中没有更改
- 如何从弹簧控制器方法更新html img src
- onload 不会在 Firefox 中使用 createObjectURL img.src 触发
- img src 属性在为空时返回页面的 URL
- EmberJS config prod img src url
- Jquery-如何在悬停时更改img src
- writeln img src将数据提交到外部系统-Firefox和IE挂起
- 使用jQuery禁用img src等于特定值时的href