2013-07-21 44 views
1

我有一對夫婦JavaScript數組:需要使用HTML的「值」中,選擇「選項」作爲數組名

var someMotionToys = ["cars", "bikes", "surfboards", "skis"]; 
var immobileToys = ["xbox", "guitar", "paintbrush", "laptop", "crossword puzzles"]; 
var rareToys = ["ironmaiden", "pogostick", "lawndarts"]; 

我有一個HTML「選擇」標記,如下所示:

 <select id="toys" onchange="handleToysChoice(this)"> 
      <option value="someMotionToys">toys in motion</option>  
      <option value="immobileToys">toys for inside</option>  
      <option value="rareToys">antique toys</option>  
    </select> 

我在這裏處理的onchange JavaScript函數:

 function handleToysChoice(theToysSelector) 
    { 
     var theToySelection = theToysSelector.value; 

     // AT THIS POINT -- assume the user selected 'toys in motion' 
     // so 'theToySelection' here is "someMotionToys" -- that is *also* 
     // the name of my array -- but the following tells me it's not 
     // referencing the array: 
     alert("The number of elements in the array " + theToySelection 
        + " is: " + theToySelection.length); 
    } 

的「長度」值我得到的是這個詞的長度「someMotionToys」其中,儘管是我數組的名字,也是html'select'框中'value'的名字。換句話說,我看到的'length'值是14('someMotionToys'中的字母數),但是我需要'length'爲4,即'someMotionToys'數組中元素的數量。我需要HTML選擇框中的「值」連接到我的數組。我想將我的數組名稱存儲在選擇框中的「值」字段中,然後在onchange處理程序中輕鬆提取「值」並快速引用正確的數組。

我如何'強迫'我從一個值的HTML'select'中獲得的文本字符串,以便它映射到我的數組名稱?

我需要在我的網頁上的幾個「選擇」中存儲數組名稱 - 我的計劃是將數組名稱存儲在「選擇」框中每個選項的「值」中。

我該如何做這項工作?我有沒有計劃順便使用jQuery。

+0

嘗試'var theToySelection = eval(theToySelector.value)',我想這會返回你的數組 – slash197

+0

@ slash197 - 謝謝!這解決了我的問題 - 這很有效。我現在可以將我的數組名稱存儲在我的選擇框中 - 很好。謝謝。 – CFHcoder

回答

5

要做到這一點,最好的辦法是讓一個對象的那些陣列性能:

var arrays = { 
    someMotionToys: ["cars", "bikes", "surfboards", "skis"], 
    immobileToys: ["xbox", "guitar", "paintbrush", "laptop", "crossword puzzles"], 
    rareToys:  ["ironmaiden", "pogostick", "lawndarts"] 
}; 

然後使用

var theArray = arrays[theToySelection]; 

...得到陣列。在JavaScript中,可以使用點符號和文字(foo.bar)或使用括號符號和字符串(foo["bar"])來訪問對象屬性。在後一種情況下,字符串可以是任何表達式的結果(例如,foo["b" + "a" + "r"]工程),包括變量引用。

如果這些陣列在全局範圍內聲明的,他們的目標  —全局對象,你可以參考使用window已經性質:

var theArray = window[theToySelection]; 

但如果他們是全局,我會推薦重構,因此它們不是全局變量。 :-)

+0

@TJ,這對我來說是新的 - 我會嘗試 - 謝謝。 – CFHcoder

+0

@CFHcoder:不客氣。我只是添加了一些對語法的解釋。 –

相關問題