2013-07-24 51 views
0

我調用一個函數裏面一個for循環,但功能似乎並不在我的HTML到正常工作函數內的循環(JS/jQuery的)

$(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"); 
    } 
}); 

,我有幾個圖片與編號IMG1 ,#img2等。 對於它們中的每一個,我都通過調用一個新的Image()來獲得它的自然尺寸,然後調整它的大小以適應600x300的div。 以上是功能fn_get_natural_dim()

當我打電話內部的for循環這一功能,它不工作的內部。具體而言,寬度和高度變量變爲零。起初我認爲函數中的「this」不再指向img變量,所以我將「this」切換爲「img」,但它仍然不起作用。

+0

img.onload = fn_get_natural_dim();將使用這個函數的返回結果,這似乎是'未定義'。請參閱@ Alnitak的回答 –

回答

1

調用fn_get_natural_dim時,你應該只是經過參考它:

img.onload = fn_get_natural_dim; 

有可能是其他問題了,但是這一次的殺手。

+0

這就是我一直在尋找的!但由於某種原因,還有另一個問題。出於某種原因,更改$(slide_image)的邊距只適用於最後一張圖像(在我的情況下是#img3) 換句話說,如果我寫$(「#output」)。append(img_name,「 ,「)函數fn_get_natural_dim內部,它只顯示」img3,img3,img3「 – dhk628