Javascript图像预加载时出现404错误
我试图在这里预装一些图片。但我需要的是在数组中预加载一些图像,并显示进度 这是可行的,但它给了我控制台中的GET 404(未找到)。但它起作用了。我该如何避免此警告 谢谢Javascript图像预加载时出现404错误,javascript,jquery,Javascript,Jquery,我试图在这里预装一些图片。但我需要的是在数组中预加载一些图像,并显示进度 这是可行的,但它给了我控制台中的GET 404(未找到)。但它起作用了。我该如何避免此警告 谢谢 function start(id) { var images = new Array(); images[0] = "http://www.travelblog.org/Wallpaper/pix/tb_fiji_sunset_wallpaper.jpg"; images[1] = "http://w
function start(id) {
var images = new Array();
images[0] = "http://www.travelblog.org/Wallpaper/pix/tb_fiji_sunset_wallpaper.jpg";
images[1] = "http://www.fantasy-and-art.com/wp-content/gallery/abstract-wallpapers/lion_hd_wallpaper.jpg";
images[2] = "http://hidefwallpaper.org/wp-content/gallery/1_apple_wallpaper_02/90831582ea8e018759044f2820b518d1.jpg";
imageObj = new Image();
imageObj.src = images[id];
imageObj.onload = function() {
if (id == images.length) {
alert('Carregou tudo');
}
if (id < images.length) {
start(id + 1);
alert(id);
}
}
}
start(0);
功能启动(id){
var images=新数组();
图像[0]=”http://www.travelblog.org/Wallpaper/pix/tb_fiji_sunset_wallpaper.jpg";
图像[1]=”http://www.fantasy-and-art.com/wp-content/gallery/abstract-wallpapers/lion_hd_wallpaper.jpg";
图像[2]=”http://hidefwallpaper.org/wp-content/gallery/1_apple_wallpaper_02/90831582ea8e018759044f2820b518d1.jpg";
imageObj=新图像();
imageObj.src=图像[id];
imageObj.onload=函数(){
if(id==images.length){
警报(“卡雷古-图多”);
}
if(id
首先设置图像数组。。。
那么
for(var i=0;i
您对start函数的递归调用执行了太多次,这就是为什么您会收到404消息,因为没有索引等于数组长度的数组元素。数组是基于零的。例如,当您在id为2时调用if(idvar images = new Array();
images[0] = "http://www.travelblog.org/Wallpaper/pix/tb_fiji_sunset_wallpaper.jpg";
images[1] = "http://www.fantasy-and-art.com/wp-content/gallery/abstract-wallpapers/lion_hd_wallpaper.jpg";
images[2] = "http://hidefwallpaper.org/wp-content/gallery/1_apple_wallpaper_02/90831582ea8e018759044f2820b518d1.jpg";
function start(id) {
imageObj = new Image();
imageObj.src = images[id];
imageObj.onload = function() {
if (id == images.length) {
console.log('Carregou tudo');
}
if (id < (images.length-1)) {
start(id + 1);
}
}
}
start(0);
var images=newarray();
图像[0]=”http://www.travelblog.org/Wallpaper/pix/tb_fiji_sunset_wallpaper.jpg";
图像[1]=”http://www.fantasy-and-art.com/wp-content/gallery/abstract-wallpapers/lion_hd_wallpaper.jpg";
图像[2]=”http://hidefwallpaper.org/wp-content/gallery/1_apple_wallpaper_02/90831582ea8e018759044f2820b518d1.jpg";
功能启动(id){
imageObj=新图像();
imageObj.src=图像[id];
imageObj.onload=函数(){
if(id==images.length){
console.log('Carregou tudo');
}
如果(id<(图像长度-1)){
启动(id+1);
}
}
}
启动(0);
在设置src之前,请确保绑定了onload事件。它不会解决此问题,但会允许缓存的图像在IE中正常工作。为什么每次都要通过函数构建数组?将该块放在函数之外难道没有意义吗?@j08691有意义。我更新了代码。@MarkLinus没有工作过.同样的问题。@KevinB是的,但我的首要任务是修复警告。显然,替换imageObj=new Image()直到函数结束。Start now不需要任何参数。它将加载所有参数,并在第三个参数准备好后发出警报。您还可以保留计数器,并在计数器达到images.length时发出警报,这样您就知道当加载所有图像时,此.id将永远不等于images.length,例如,id为0,1,2,且长度将为3.哦,对了,这是一个愚蠢但无关紧要的错误。替换为length-1和good-to-go&另外,这是在触发onload函数时设置为object的。是的,我尝试了你的代码,它给了我一个未知的语法错误:意外的标记非法,当你把它放在你的站点中时不工作,或者在jsFiddle中不工作?不。图像长度iS3.并且您的代码指向id是否与ans图像长度相同。我修改了,它成功了:。非常感谢,伙计!:)我只是从您的原始代码中保留了它。我不知道您需要它做什么,无论您学会如何使用示例并修改它,我都很好。
var images = new Array();
images[0] = "http://www.travelblog.org/Wallpaper/pix/tb_fiji_sunset_wallpaper.jpg";
images[1] = "http://www.fantasy-and-art.com/wp-content/gallery/abstract-wallpapers/lion_hd_wallpaper.jpg";
images[2] = "http://hidefwallpaper.org/wp-content/gallery/1_apple_wallpaper_02/90831582ea8e018759044f2820b518d1.jpg";
function start(id) {
imageObj = new Image();
imageObj.src = images[id];
imageObj.onload = function() {
if (id == images.length) {
console.log('Carregou tudo');
}
if (id < (images.length-1)) {
start(id + 1);
}
}
}
start(0);