我在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(),然后调整其大小以适应600x300 div来获得其自然尺寸。 以上是函数fn_get_natural_dim()
当我在for循环中调用此函数时,它不起作用。具体地说,宽度和高度变量变为零。起初我认为函数中的“this”不再指向img变量,所以我将“this”切换为“img”,但它仍然不起作用。
答案 0 :(得分:1)
当你将传递给它时,你正在调用 fn_get_natural_dim
:
img.onload = fn_get_natural_dim;
也可能存在其他问题,但这一个是杀手。