-1

私はこの方法で解決する必要がある状況にあります。をに変換する必要がありlocal variableますglobal variableこの回答からこれらのメソッドを見つけた画像の実際の幅と高さを返す例があります。.

ローカル変数を変換し、真の値を返すグローバル変数に変換する必要がpic_real_heightありpic_real_widthます。

ここにjsFiddleがあります。

CSS :

img { width:0px; height:0px; }​

jQuery :

console.log($('.imgCon img').height());//returns 0

var img = $('.imgCon img')[0]; // Get my img elem
var pic_real_width, pic_real_height;
$('<img/>').attr('src', $(img).attr('src')).load(function() {
        pic_real_width = this.width;   
        pic_real_height = this.height;

        console.log( pic_real_width + 'x' + pic_real_height );
        // -- returns true 570x320 --
});
//problem starts here:
console.log( pic_real_width + 'x' + pic_real_height );
//returns undefined
// need to return this as an global variable 570x320
4

2 に答える 2

2

この行、

console.log( pic_real_width + 'x' + pic_real_height );

これらの行を待機しません

    pic_real_width = this.width;   
    pic_real_height = this.height;

    console.log( pic_real_width + 'x' + pic_real_height );
    // -- returns true 570x320 -- 

非同期であるため、実行する必要があります。

したがって、 コールバック関数が呼び出される前 (つまり、およびconsole.log( pic_real_width + 'x' + pic_real_height );を設定する前) に実行されます。widthheight

まだ定義していないため、表示されますundefined

些細な解決策は、

$('<img/>').attr('src', $(img).attr('src')).load(function() {
        pic_real_width = this.width;   
        pic_real_height = this.height;

        console.log( pic_real_width + 'x' + pic_real_height );
        // -- returns true 570x320 --
        restOfMyProcessing();

}); 

function restOfMyProcessing() {
    console.log( pic_real_width + 'x' + pic_real_height );
}
于 2012-08-04T21:28:42.270 に答える