2014-02-07 108 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中运行。