2011-08-08 69 views
0

我在我的函數中有值,但它表示它沒有被定義。在javascript/jquery中有參數的函數將不起作用

這是我的代碼:

<img onload="getFullnameDetails(263,225)" src="'+getBaseURL()+'js/check/no-image.png" rel="fullname" /> 

function getFullnameDetails(mainHeight,upperstyle){ 
setTimeout("fullnameCenter(mainHeight,upperstyle)",2000); 
} 

function fullnameCenter(mainHeight,upperstyle){ 
    var distOfMainAndUpper = 38; 
    var mainHalfHeight = 131.5; 
    var imageHeight = jQuery("img[rel='fullname']").height(); //there is a delay 
    var imageHalfHeight = imageHeight/2; 
    var fromImageTopToMainHalf = mainHalfHeight - imageHeight; 
    var position = imageHalfHeight+fromImageTopToMainHalf-distOfMainAndUpper; 
    jQuery(".test1").css("bottom",position+"px"); 
} 

在這裏說,mainHeight沒有定義。這是爲什麼發生。 這發生在這條線:setTimeout("fullnameCenter(mainHeight,upperstyle)",2000);

在此先感謝;)

回答

1

當您設置超時,它在全球範圍內運行,因此mainHeight和upperstyle不再範圍。你是關閉使用匿名功能,並提供了更好的參數:

setTimeout(function() { 
    fullnameCenter(mainHeight,upperstyle); 
}, 2000); 
2

試試這個

function getFullnameDetails(mainHeight,upperstyle){ 
    setTimeout(function() {fullnameCenter(mainHeight,upperstyle);},2000); 
} 
+0

佩納,它的手推車,謝謝! ;) – PinoyStackOverflower

0
var imageHeight = jQuery("img[rel='fullname']").height(); //there is a delay 

你jQuery的圖像對象,它不工作!讓我電話你一個祕密,你不需要延遲試試這個:

var imageHeight = jQuery("img[rel='fullname']")[0].height; 

你看,我添加了「[0]」 jQuery選擇之後,將返回的HTML圖像元素,而不是圖像jquery對象。