Javascript 如何从内部传递变量单击函数将外部变量设置为零

Javascript 如何从内部传递变量单击函数将外部变量设置为零,javascript,Javascript,我有一个名为progress的变量,如下所示 单击下图中的图像时,我希望进度设置为0;我在下面试 var progress = 10; var progress2 = $(".close2 img").click(function() { // if user clicks the reset button (Start Over) then var progress = 0; //console.log(progress); return progress; }); 但它失败了。。

我有一个名为progress的变量,如下所示

单击下图中的图像时,我希望进度设置为0;我在下面试

var progress = 10;
var progress2 = $(".close2 img").click(function() { 
 // if user clicks the reset button (Start Over) then
 var progress = 0;
 //console.log(progress);
 return progress;
});
但它失败了。。范围内的进度设置为零。但是在外面我很难通过它……有人能帮我找出我犯的错误吗?

就这么做吧

    $(".close2 img").click(function() { 
        progress = 0;
        //console.log(progress);
        return progress;
    });
当您使用var时,您正在函数内创建一个变量(具有相同的名称)

PD:正如@adeneo所说,试图捕获jQuery侦听器的输出是无用的。progress2的声明将始终是一个DOM元素数组

以这个函数为例

var true_body=jQuery('body').click(function() { return true; });
似乎真体总是将
true
作为其值。事实是,身体是真的

[…这里的所有正文内容…]

就这样做吧

    $(".close2 img").click(function() { 
        progress = 0;
        //console.log(progress);
        return progress;
    });
当您使用var时,您正在函数内创建一个变量(具有相同的名称)

PD:正如@adeneo所说,试图捕获jQuery侦听器的输出是无用的。progress2的声明将始终是一个DOM元素数组

以这个函数为例

var true_body=jQuery('body').click(function() { return true; });
似乎真体总是将
true
作为其值。事实是,身体是真的


[…此处的所有正文内容…]

您正在将局部变量
进度
设置为0,而外部
进度
保持不变。从
var progress=0中删除
var
不声明新变量。

您正在将局部变量
进度
设置为0,而外部
进度
保持不变。从
var progress=0中删除
var
不声明新变量。

您的代码正在声明一个新的进度变量,该变量位于单击处理程序的作用域中。您可以从封闭范围访问进度变量,如下所示:

  var progress = 10;

  $(".close2 img").click(function() {
       progress = 0;
  });

您的代码正在声明一个新的进度变量,该变量位于单击处理程序的作用域的本地。您可以从封闭范围访问进度变量,如下所示:

  var progress = 10;

  $(".close2 img").click(function() {
       progress = 0;
  });

不能从click函数返回,progress2是一个包含image元素的jQuery对象?极好的point@adeneo不能从click函数返回,progress2是一个包含image元素的jQuery对象?极好的point@adeneo说返回值是一个DOM元素数组有点误导。实际上,它是一个jQuery对象,对于任何有用的“click”应用程序,它总是包装一个或多个DOM元素。但是返回的对象不是DOM元素数组……没错,它不是真正的数组,因为它继承了jQuery的方法,但它的行为类似于数组,因为您可以使用jQuery(选择器)[0]访问原始DOM元素。如果说返回值是DOM元素数组,那就有点误导了。实际上,它是一个jQuery对象,对于任何有用的“click”应用程序,它总是包装一个或多个DOM元素。但是返回的对象不是DOM元素的数组……没错,它不是真正的数组,因为它继承了jQuery的方法,但它的行为类似于数组,因为您可以使用jQuery(选择器)[0]实际访问原始DOM元素。