2012-06-27 101 views
0

我有一個簡單的jQuery腳本來顯示/隱藏手風琴風格的列表元素以及全局布爾數組以保存顯示/隱藏的列表。然而,當從顯示/隱藏不同的子列表切換時,布爾數組變爲未定義,即(我調用form_nav_links函數來顯示該列表,然後當我嘗試顯示help_nav_links後,該數組未定義,並需要額外的點擊)。有人可以幫我解決這個問題嗎?這裏是我有:全局數組undefined

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

在此先感謝!

+4

'布爾[2];'在JavaScript中意味着什麼有用的。 –

+0

這是怎麼回事?你可以設置[小提琴](http://jsfiddle.net)? –

+0

使用slideToggle(),從來沒有使用全局變量:) – varela

回答

0

我使用的slideToggle解決的問題(),而不是

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

哇,嚴格等於'undefined'字符串,你還希望從typeof? – varela

+0

啊,我原來是這樣,但後來試圖訪問像listsOn.blah布爾(我不到一個星期到JS) – Austin

+0

@varela:沒有理由不使用嚴格平等和它更容易有一個既定的習慣使用嚴格的等式而不是切換,並將其交給維護者以確定是否可以接受非嚴格的相等運算符。 – Dancrumb