2014-02-07 116 views
1

我試圖獲取圖像的尺寸而不用在DOM中。全局變量不會改變

var myVariable; 
$('<img src="http://www.skrenta.com/images/stackoverflow.jpg"/>').load(function(){ 
    myVariable = this.width; 
}); 
console.log(myVariable); 

爲什麼控制檯顯示myVarible是未定義的?

+0

看看[這個小提琴](http://jsfiddle.net/antisanity/8Tu7j/)。它可以幫助你理解執行的順序。 – canon

+0

所以「加載img」首先顯示。那我該怎麼辦? – TGeorge

+0

將你的代碼放入'load'處理程序中。 – canon

回答

1

圖像加載發生在不同的請求中。

myVariable將被設置爲將來任意時間的寬度,幾乎總是在console.log之後發生呼叫。

+0

那麼...我該怎麼辦? – TGeorge

+0

@ George02做任何你需要做的回調?我的意思是,除非您可以用其他方式計算/檢索長度,否則直到擁有圖像時才能獲得寬度。 –

+0

你說得對,謝謝你,先生! – TGeorge

3

您的變量未定義,因爲它是在圖像加載後初始化的,換句話說:console.log調用較早,然後在load中運行。