Javascript 全局数组未定义

Javascript 全局数组未定义,javascript,arrays,undefined,global,Javascript,Arrays,Undefined,Global,我有一个简单的jQuery脚本来显示/隐藏列表元素,并使用一个全局布尔数组来保存显示/隐藏的列表。但是,当从显示/隐藏不同的子列表切换时,布尔数组未定义,即(我使用form_nav_links调用函数来显示该列表,然后当我尝试在后面显示help_nav_links时,该数组未定义,需要额外单击)。有人能帮我修一下吗?以下是我所拥有的: var listsOn = Boolean[2]; listsOn = [false, false]; var form_links = 0, help_link

我有一个简单的jQuery脚本来显示/隐藏列表元素,并使用一个全局布尔数组来保存显示/隐藏的列表。但是,当从显示/隐藏不同的子列表切换时,布尔数组未定义,即(我使用form_nav_links调用函数来显示该列表,然后当我尝试在后面显示help_nav_links时,该数组未定义,需要额外单击)。有人能帮我修一下吗?以下是我所拥有的:

var listsOn = Boolean[2];
listsOn = [false, false];
var form_links = 0, help_links = 1;

function toggleView(subList) {
    var i;

    switch(subList){
        case "form_nav_links":
            i = form_links;
            break;
        case "help_nav_links":
            i = help_links;
            break;
        };

    if(listsOn[i]){
        $("." + subList).slideUp(1000);
        listsOn[i] = false;
        }
    else {
        $("." + subList).slideDown(1000);
        listsOn[i] = true;
        }

提前谢谢

您确实应该在这里使用关联数组:

var listsOn = {
  form_nav_links: false,
  help_nav_links: false
};

function toggleView(subList) {
  if(typeof listsOn[subList] !== 'undefined') {
    if(listsOn[subList]{
        $("." + subList).slideUp(1000);
        listsOn[subList] = false;
    }
    else {
        $("." + subList).slideDown(1000);
        listsOn[subList] = true;
    }
  }
}

我用slideToggle()代替布尔[2]解决了这个问题没有任何用处。这是如何调用的?你能设置一个吗?使用slideToggle()并且永远不要使用globals:)^^^好吧,那就太好了,瓦雷拉。这漂亮地把它降到了1行=)哇,严格等于“未定义”字符串,你对typeof还有什么期待?啊,我本来就有这个,但后来被困在尝试访问像listsOn.blah这样的bools(我进入JS还不到一周)@瓦雷拉:没有理由不使用严格相等,而且使用严格相等的习惯比切换并让维护人员决定是否接受非严格相等运算符更容易。