如何在javascript中获取函数内部的变量
我试图使用下面的代码获得图像的宽度,但问题是,我无法检索函数中的变量如何在javascript中获取函数内部的变量,javascript,image,function,width,Javascript,Image,Function,Width,我试图使用下面的代码获得图像的宽度,但问题是,我无法检索函数中的变量 var get_image_h_w = new Image(); var width; get_image_h_w.onload = function() { width = get_image_h_w.width; } get_im
var get_image_h_w = new Image();
var width;
get_image_h_w.onload = function() {
width = get_image_h_w.width;
}
get_image_h_w.src = img_link_url;
alert(width);
.onload
处理程序将在运行警报(宽度)
后的一段时间内执行。它将在运行时设置变量width
,但知道何时发生的唯一可靠方法是将要使用该width
值的代码放入onload
处理程序,或从onload
处理程序调用它。这是一个异步回调的示例,这意味着当事件发生时,它与代码的其余部分“不同步”
var get_image_h_w = new Image();
get_image_h_w.onload = function() {
alert(this.width);
// you can call some code here that wants to use this width
// and pass the width to that function
callYourFunction(this.width);
}
get_image_h_w.src = img_link_url;
注意:我还切换到使用
this.width
,其中this
是创建onload
事件的对象。这与您使用它的方式没有什么不同,但它更通用,特别是当您希望同一事件处理程序可用于多个对象时,因此使用它是一种很好的做法。变量宽度
很可能是,调用alert时永远不会保持图像宽度,因为onload事件在触发之前不会停止执行。您只是将一个函数分配给onload事件。onload事件不会立即触发。相反,它会在映像完成加载时激发,这可能是在执行到达您的警报调用之后
尝试在onload事件中放置一个回调函数,该函数将使用新设置的变量
get_image_h_w.onload = function() {
width = get_image_h_w.width;
finishedLoading();
}
var finishedLoading = function () {
var w = width; // width will be set here
}
您能确保调用了onload函数吗?