全局数组未定义

时间:2012-06-27 18:13:26

标签: javascript arrays undefined global

我有一个简单的jQuery脚本来显示/隐藏列表元素accordion-style以及一个全局布尔数组来保存显示/隐藏的列表。但是,当从显示/隐藏不同的子列表切换时,布尔数组未定义,即(我调用带有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;
        }

提前致谢!

2 个答案:

答案 0 :(得分:1)

你真的应该在这里使用关联数组:

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;
    }
  }
}

答案 1 :(得分:0)

我使用slideToggle()代替

解决了这个问题