从Javascript函数返回一个变量
如何访问从Javascript函数返回一个变量,javascript,jquery,Javascript,Jquery,如何访问imgWidth的值?这给了我未定义的 somejQueryMethod(function() { var imgWidth; $("<img/>").attr( "src", $("#SomeImgSelector").attr("src") ).load(function() { imgWidth = this.width; }); // use imgWidth here
imgWidth
的值?这给了我未定义的
somejQueryMethod(function() {
var imgWidth;
$("<img/>").attr(
"src",
$("#SomeImgSelector").attr("src")
).load(function() {
imgWidth = this.width;
});
// use imgWidth here
// imgWidth is undefined here
});
somejQueryMethod(函数(){
var imgWidth;
$("
背景信息:我假设asimgWidth
是在load()
方法之外定义的,
它总是在load()
之外可用,这使我
想知道为什么在那里定义imageWidth
,而不是在load()
中
你的问题对我来说没有多大意义。你不能在那里使用它,因为它还没有值-你应该在load handler函数中使用它,或者在它被定义之后使用它
编辑:只是为了添加,花点时间想想你在那里做什么。当你改变src属性时,你告诉它从某个url加载一个图像。然后,你附加一个加载事件来触发(当它完成加载时)捕获加载的图像的宽度。现在,在代码加载完图像之前,当然不能使用该值。这里使用的是异步加载,这实际上意味着您的代码将被处理到最后,加载将“同时”进行",因此它不会等待图像加载完成。如果您愿意,您还可以更改代码,使其实际等待图像加载完成,或者您可以在加载处理程序中处理宽度,正如其他人所演示的那样。您不能在那里使用该值,因为它还不存在。load
命令在加载内容后运行,并且在使用load
命令的函数结束后运行
将需要该值的代码放入load
命令的回调函数中:
...somejQueryMethod(
function() {
var imgWidth;
$("<img/>").attr("src", $("#SomeImgSelector").attr("src")).load( function() {
imgWidth = this.width;
// use imgWidth here
} );
}
);
…一些jquerymethod(
函数(){
var imgWidth;
$(“加载
函数是异步的,这意味着您需要提供回调函数中的所有功能
somejQueryMethod(function() {
$("<img/>").attr(
"src",
$("#SomeImgSelector").attr("src")
).load(function() {
var imgWidth = this.width;
// use imgWidth here
});
});
somejQueryMethod(函数(){
$(“您在哪里得到未定义的错误?您必须等待$.load()
回调运行,这意味着您需要回调来使用imgWidth
(基本上,您在哪里设置了变量)。$.load()
是异步的,这意味着它允许代码在工作时继续。imgWidth
在那里定义,它只有一个值undefined
。所以是的,它应该在加载处理程序中使用,或者在加载处理程序中调用的其他函数中使用。@nnnnnn对。我修复了这个问题。它已定义,但没有v价值尚未确定(超出未定义的范围)。