从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;
$("
背景信息:我假设as
imgWidth
是在
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价值尚未确定(超出未定义的范围)。