for循环中的函数(js / jquery)

我在for循环中调用一个函数,但该函数似乎无法正常工作

$(document).ready(function(){ function fn_get_natural_dim(){ var width = this.width; var height = this.height; var ratiow = width/600; var ratioh = height/300; if(ratiow>=ratioh) { height = height/ratiow; $(slide_image).css("width","600px"); $(slide_image).css("height",height); var margin = (300-height)/2; $(slide_image).css("margin-top",margin); } else { width = width/ratioh; $(slide_image).css("width",width); $(slide_image).css("height","300px"); var margin = (600-width)/2; $(slide_image).css("margin-left",margin); } } var max_count = $(".slider").children().length; for(var count=1;count<=max_count;count++) { var count_string = count.toString(); var img_name = "img" + count_string; var slide_image = document.getElementById(img_name); var img = new Image(); img.onload = fn_get_natural_dim(); img.src = $(slide_image).attr("src"); } }); 

在我的HTML中,我有几个id为#img1,#img2等的图像。 对于他们中的每一个,我通过调用一个新的Image(),然后调整其大小以适应600×300 div来获得其自然尺寸。 以上是函数fn_get_natural_dim()

当我在for循环中调用此函数时,它不起作用。 具体而言,宽度和高度变量变为零。 起初我认为函数中的“this”不再指向img变量,所以我将“this”切换为“img”,但它仍然不起作用。

你应该只是传递一个引用调用 fn_get_natural_dim

 img.onload = fn_get_natural_dim; 

可能还有其他问题,但这个问题是杀手锏。