2011-08-08 15 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

Pena、It wokrs、thanks! ;) – PinoyStackOverflower

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

あなたはjqueryの画像オブジェクトを取得し、それが動作しません!そしてTELあなたあなたが遅延を必要としない秘密は、これを試すとさせて頂いております:

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

あなたは、私が「[0]」jQueryのセレクタの後に、それはHTMLの画像要素ではなく、画像を返します追加したことを見ますjqueryオブジェクト。

関連する問題