Javascript For循环在遇到不';不存在

Javascript For循环在遇到不';不存在,javascript,jquery,Javascript,Jquery,我试图使用for循环在div中加载一系列图像,当文件不存在时,for循环中断。这个代码似乎不起作用 我已经测试过很多其他人,但没有成功。有什么建议吗 HTML: JavaScript: function load_projects() var project_array = new Array(); var project_name; for(var i = 0; i < 7; i++) { project_array.push(new Image());

我试图使用for循环在div中加载一系列图像,当文件不存在时,
for
循环中断。这个代码似乎不起作用

我已经测试过很多其他人,但没有成功。有什么建议吗

HTML:


JavaScript:

function load_projects()
  var project_array = new Array();
  var project_name;

  for(var i = 0; i < 7; i++) {
    project_array.push(new Image());

    project_name = "project_" + i;

    project_array[i].src = "images/" + project_name + ".png";
    project_array[i].id = project_name;

    $("#project_img").append(project_array[i]);

    $("#" + project_name).error(function() {
      alert(i);
      i = 7;
    })
  }
}

$(document).ready(function() {
  load_projects();
});
函数加载\u项目()
var project_array=新数组();
var项目名称;
对于(变量i=0;i<7;i++){
project_array.push(新图像());
项目名称=“项目”+i;
project_array[i].src=“images/”+project_name+“.png”;
project\u数组[i].id=project\u名称;
$(“#project_img”).append(project_array[i]);
$(“#”+项目名称)。错误(函数(){
警报(一);
i=7;
})
}
}
$(文档).ready(函数(){
加载_项目();
});
试试这个

function drawImage(i) {

project_array.push(new Image());

var project_name = "project_" + i;

project_array[i].src = "images/" + project_name + ".png";
project_array[i].id = project_name;

$("#project_img").append(project_array[i]);

$("#" + project_name).load(function() {
   if ( i + 1 < 7)
     drawImage(i + 1);  
}) ;  
 }

$(document).ready(function() {
  drawImage(0);
});

var project_array = new Array();
函数drawImage(一){
project_array.push(新图像());
var project_name=“project”+i;
project_array[i].src=“images/”+project_name+“.png”;
project\u数组[i].id=project\u名称;
$(“#project_img”).append(project_array[i]);
$(“#”+项目名称).load(函数(){
如果(i+1<7)
绘图图像(i+1);
}) ;  
}
$(文档).ready(函数(){
绘图图像(0);
});
var project_array=新数组();

问题是,错误回调将在
for
循环完成后调用(从0运行到7)

如果加载当前图像时没有错误,则要开始加载下一个图像,则必须更改策略:您需要一个成功回调,它将开始加载下一个图像。如果已成功加载映像,则可以使用jQuerys方法设置回调:

$("...").load(function() { ... });
如果已加载当前图像,但未显示所有图像,则开始加载下一个图像:

$("#" + project_name).load(function() {
    if (i < 7) {
        load_projects(i + 1);
    }
});
不需要,但如果需要,可以再次添加错误回调:

    ...
    $("#" + project_array[i].id).error(function() {
        alert('error at ' + i);
    });
    ...

也看我的。(在那里我添加了一个现有的图像。)

我假设在
函数加载_projects()之后缺少
{
只是一个输入错误?否则我看不出有什么地方坏了,for循环工作了,我得到了一堆无效的图像:嘿,谢谢你的回复,是的for循环工作了,但我正在尝试在图像不存在时停止for循环,这就是为什么我更改I=7,但循环不会停止,它仍然加载无效的图像:sthanks!这是真的详细地说,为什么错误回调只会在for循环完成后运行,它不是嵌套在for循环中吗?jQuery error方法只添加一个回调并继续。事件将从函数外部触发,只有在发现错误时才会调用回调。(那么for循环已经完成。)谢谢,我想我明白了=)刚刚检查了错误()再次描述并解释,“错误事件被发送到文档引用并由浏览器加载的元素,如图像。”顺便问一下,您是否知道OneError,文档引用的事件是否也是??两者都是相同的事件。不使用jQuery,您可以使用
onerror
属性捕获
错误t
,使用jQuery可以使用
error
方法。
var project_array = new Array();

function load_projects(i) {
    project_array.push(new Image());
    project_array[i].id = "project_" + i;
    project_array[i].src = "images/" + project_array[i].id + ".png";

    $("#project_img").append(project_array[i]);

    $("#" + project_array[i].id).load(function() {
        if (i < 7) {
            load_projects(i + 1);
        }
    });
}

$(document).ready(function() {
    load_projects(0);
});
    ...
    $("#" + project_array[i].id).error(function() {
        alert('error at ' + i);
    });
    ...