0

嗨,我想了解函数如何返回值。我有两个功能,一是工作,二是不工作。我想知道为什么第二个功能不起作用。 http://jsfiddle.net/95vXQ/5/

在此处输入图像描述

这是第二个不起作用的功能。我想知道为什么它没有改变 isVisible 值

在此处输入图像描述

4

5 回答 5

2

jQuery点击功能在这个链接中解释得很清楚。click 函数可用于在单击对象时触发单个或一系列 jQuery 事件。函数中声明的变量仅在该单击函数中有效。点击函数不能返回值,只能触发事件。

于 2012-09-07T11:47:46.240 回答
2

这是变量范围问题。在此处查找更多信息。为简单起见,您在函数内部定义的任何变量在函数外部都是未定义的。

第二个屏幕截图中的函数失败,因为每次有点击事件时都会执行该函数,即,即使您正在重置 isVisible 值,它也不会被带到下一次调用,因为您再次初始化 isVisible 并将 true 值设置为它。

于 2012-08-27T11:48:31.983 回答
2

第二个屏幕截图不起作用,因为isVisible在 click 函数中定义。一旦该功能完成isVisible,就会取消设置。当您再次调用 click 函数时,isVisible它会被重置并且它的值恢复为 true。这就是所谓的变量作用域

而这个问题与返回值无关。要返回一个值,您必须使用return [varname],这在 click 函数中无济于事。

于 2012-08-27T11:00:49.817 回答
2

您的第二个示例没有按预期工作,因为在函数内部您正在将值重新分配给 true isVisible; 并注意isVisible,如果您在 click 函数中声明它,则范围将仅在函数内部。

如果您只想了解上述示例的工作原理,并且对在函数外部声明变量不感兴趣,请尝试使用这个 jsfiddle

如果你想做一个显示/隐藏功能,那么试试这个切换 jsfiddle。代码如下。

$(function(){
    $("#btnShow").toggle(
        function(){
            $(this).val("Show");
            $("#divContent").hide();
        },
        function(){
            $(this).val("Hide");
            $("#divContent").show();
        }
    );    
});
于 2012-09-07T15:57:32.787 回答
0

很简单..阿米特。

  1. 按钮 = 隐藏;显示 div 内容
  2. 点击隐藏;现在 IsVisible 为真;它会隐藏起来;按钮 = 显示;div 被隐藏
  3. 现在,单击显示。Click 处理程序再次执行代码并创建一个变量 IsVisible 作为新变量,并将其设置为 true。它隐藏了 div(已经隐藏)并且按钮仍然显示 Show。

在您的第一种情况下,它是一个全局变量,因此,一旦它在 hidden 之后更新为 False ,它就会再次显示 div 。

还是不清楚?

于 2012-09-10T14:24:51.990 回答