从 Javascript 函数返回一个变量
Return a variable from a Javascript function
如何访问imgWidth
的值?这给了我undefined
.
somejQueryMethod(function() {
var imgWidth;
$("<img/>").attr(
"src",
$("#SomeImgSelector").attr("src")
).load(function() {
imgWidth = this.width;
});
// use imgWidth here
// imgWidth is undefined here
});
背景信息:从这个SO问题中,我假设由于
imgWidth
是在load()
方法之外定义的, 它将始终在load()
之外可用。这让我 想知道为什么在那里定义imageWidth
而不是在load()
中?
您不能在那里使用该值,因为它尚不存在。load
命令中的回调函数在加载内容后运行,这在使用 load
命令的函数结束后发生。
将需要值的代码放在 load
命令的回调函数中:
...somejQueryMethod(
function() {
var imgWidth;
$("<img/>").attr("src", $("#SomeImgSelector").attr("src")).load( function() {
imgWidth = this.width;
// use imgWidth here
} );
}
);
你的问题对我来说没有多大意义。您不能在那里使用它,因为它还没有值 - 当它被定义时,你应该在负载处理程序函数内或之后使用它。
编辑:补充一下,花点时间想想你在那里做什么。当您更改 src 属性时,您告诉它从某个 url 加载图像。然后,附加要触发的加载事件(当它完成加载时)以捕获加载图像的宽度。现在,当然,在代码完成加载图像之前,您不能使用该值。在这里,您使用的是异步加载,这实际上意味着您的代码将被处理到最后,并且加载将"同时"发生,因此它不会等待图像加载完成。如果需要,您还可以更改代码,使其实际上等待其完成,或者您可以按照其他人所演示的那样,在加载处理程序中调整宽度。
load
函数是异步的,这意味着您需要在回调函数中提供所有功能。
somejQueryMethod(function() {
$("<img/>").attr(
"src",
$("#SomeImgSelector").attr("src")
).load(function() {
var imgWidth = this.width;
// use imgWidth here
});
});
相关文章:
- 导航到特定事件的另一个变量页面
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 使用mongodb更新中的一个变量
- 将节点数据分配给另一个变量jstree
- Javascript:在激发函数后返回一个变量以供使用
- 替换另一个变量对象中的变量值
- 什么'它的意思是当一个变量位于括号外时
- 可以't将sessionStorage设置为Javascript中的一个变量
- 在Flickr API的标签参数中传递一个变量
- 从Jquery函数中获取一个变量
- 为两个ID设置一个变量的正确语法
- 如何将变量值附加到另一个变量
- 通过加载函数发送一个变量
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 如何在Jquery函数中为自动完成文本区域指定一个变量作为Id
- Javascript未在其中一个变量上输出0
- 保留“;这个“;在一个变量中;这个“;使用此变量
- 是否可以在另一个变量中使用未声明的变量
- JS/ANGULAR使用一个变量's值作为另一个对象的键
- 如何每秒从一个变量中提取一定次数的javascript/html