首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有if/else语句的转义键- jQuery

带有if/else语句的转义键- jQuery
EN

Stack Overflow用户
提问于 2012-10-30 23:45:29
回答 2查看 251关注 0票数 1

我想让我的esc-key根据当前的情况做一些不同的事情。例如,我有一个显示工具栏的按钮,我想用“esc”-键隐藏它,但我也想用“esc”-键打开一个关闭当前页面的框,如果你按“esc”-键,它应该会隐藏关闭框。

我想应该是这样的,但它只打开了关闭的盒子。当我再次输入'esc‘时,它不会关闭它,当它显示时,它也不会隐藏工具箱。它只会打开顶部的封闭盒。

代码语言:javascript
复制
function esc_key_command() {
    if (toolboxIsShown) {
        $('.tool_box').hide();
        var toolboxIsShown = false;
    } else if (CloserIsShown) {
        $('.closer').stop().fadeOut(200);
        var CloserIsShown = false;
    } else {
        $('.closer').stop().fadeIn(200);
        var CloserIsShown = true;
    }
}

我知道它与调用'esc‘键没有任何关系,因为当键入键时,它至少会返回一些东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-30 23:48:13

var声明是问题所在。变量的作用域是局部的,所以每次调用函数时,它们都会被重置。

如果你想用变量来实现,你需要在函数作用域之外设置它们。

既然可以检查状态,为什么还要使用变量

代码语言:javascript
复制
function esc_key_command() {
    var tools = $('.tool_box');
    var closer = $('.closer');
    if (tools.is(":visible")) {
        $('.tool_box').hide();
    } else if (closer.is(":visible")) {
        $('.closer').stop().fadeOut(200);
    } else {
        $('.closer').stop().fadeIn(200);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2012-10-30 23:51:31

这看起来像是范围问题。变量CloserIsShown是在esc_key_command函数中创建的,因此在运行比较时它还不存在。尝试在函数外部设置变量,并在函数内部重新赋值时删除var命令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13142697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档