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

时间:2014-08-06 12:24:07

标签: 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;
});

但它失败了..进度在范围内设置为零。但在外面我无法通过它...有人可以帮助我弄清楚我犯的错误吗?

3 个答案:

答案 0 :(得分:2)

只做

    $(".close2 img").click(function() { 
        progress = 0;
        //console.log(progress);
        return progress;
    });

使用var时,您将在函数内创建一个变量(具有相同名称)。

PD:正如@a​​deneo所说,尝试捕获jQuery监听器的输出是没用的。您的progress2声明将始终是DOM元素的数组。

以此功能为例

var true_body=jQuery('body').click(function() { return true; });

似乎true_body总是会收到true作为其值。真相是,true_body是

[<body>....all body contents here...</body>]

答案 1 :(得分:2)

您将局部变量progress设置为0,而外部progress保持不变。从var移除var progress = 0;以不声明新变量。

答案 2 :(得分:0)

您的代码声明了一个新的进度变量,该变量位于Click处理程序的范围内。您可以从封闭的范围访问progress变量,如下所示:

  var progress = 10;

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