Javascript Jquery无法定位图像

Javascript Jquery无法定位图像,javascript,jquery,image,position,preloader,Javascript,Jquery,Image,Position,Preloader,跟进: 函数initResources(){ var-newImage; 对于(i=0;i

跟进:

函数initResources(){
var-newImage;
对于(i=0;i
当页面比例发生变化时,也会调用此函数。缩放函数清除HTML并使用缩放倍增器重新绘制所有内容


这个函数的问题是,它总是提醒resourceData.length,这是循环的结束。我需要以某种方式将数据传递给load函数,以便当映像最终加载时,它引用的是正确的ID/I。

您有一个
I
变量,它在所有回调中共享

由于回调是异步执行的,所以当
i
length
时,它们都将在循环完成后执行

您需要将循环体放入一个单独的函数中,该函数将
i
作为参数。

这样,每个
load
回调将使用一个单独的
i
变量(函数参数),该变量永远不会更改。

您有一个
i
变量,该变量在所有回调中共享

由于回调是异步执行的,所以当
i
length
时,它们都将在循环完成后执行

您需要将循环体放入一个单独的函数中,该函数将
i
作为参数。
这样,每个
load
回调将使用一个单独的
i
变量(函数参数),该变量永远不会改变。

您可以使用一个循环来创建闭包(该索引是它自己的变量,而不是共享的)您需要…并且调用也需要一些更改,您应该使用此处,它接受一个对象,如下所示:

function initResources() {
    var newImage;
    $.each(resourceData, function(i, data) {
       newImage = $('<img alt="Big" id="imgA' + i + '" class="mediaImg" width="' + Math.round(data[2] * currentScale) + '" height="' + Math.round(data[3] * currentScale) + '" />');
       newImage.load(function() {
            $(this).css({ top: Math.round(data[5] * currentScale), 
                         left: Math.round(data[4] * currentScale) });
       });
       newImage[0].src = uploadFolder + '/' + imgData[data[1]][1];
       $('#thePage').append(newImage);
    });
}
函数initResources(){
var-newImage;
$.each(资源数据,函数(i,数据){
newImage=$('
您可以进一步缩短它,但它不会更有效。请记住,在事件处理程序中,您可以使用
this
引用处理程序所针对的元素,无需再次选择它。

您可以使用循环创建闭包(该索引是它自己的变量,而不是共享的)您需要…并且调用也需要一些更改,您应该使用此处,它接受一个对象,如下所示:

function initResources() {
    var newImage;
    $.each(resourceData, function(i, data) {
       newImage = $('<img alt="Big" id="imgA' + i + '" class="mediaImg" width="' + Math.round(data[2] * currentScale) + '" height="' + Math.round(data[3] * currentScale) + '" />');
       newImage.load(function() {
            $(this).css({ top: Math.round(data[5] * currentScale), 
                         left: Math.round(data[4] * currentScale) });
       });
       newImage[0].src = uploadFolder + '/' + imgData[data[1]][1];
       $('#thePage').append(newImage);
    });
}
函数initResources(){
var-newImage;
$.each(资源数据,函数(i,数据){
newImage=$('

您可以进一步缩短它,但效率不会提高。请记住,在事件处理程序中,您可以使用
this
引用处理程序所针对的元素,无需再次选择它。

如果您向
$添加参数。each()
回调可以获得
resourceData[i]的值
而不必每次都挖掘数组。@gnarf-很好的观点-对于小数组来说这并不重要,但看起来更干净…我也没有注意到markdown完全破坏了一些数组值-认为有些东西看起来不对劲,现在修复了。如果你在
$中添加了一个参数。each()
callback您可以获得
resourceData[i]
的值,而无需每次都挖掘数组。@gnarf-很好的观点-对于小数组来说这无关紧要,但看起来确实干净多了…我也没有注意到markdown完全破坏了一些数组值-虽然有些东西看起来不对劲,但现在已修复。