在下面的演示中,點擊無序列表(#Foo
或#Biz
)中的一個應附加從相應的數組包含文本3 li
的,無論是arrayFoo或arrayBiz動態指JS陣列。儘管我在動態引用正確的數組時遇到了問題,但我想避免在實際項目中使用冗長的if/else語句集,其中可能有5到30個元素/數組。使用級聯命名空間
我想通過建立像這樣listArray = (array + listName)
命名空間動態選擇陣列,但不起作用。有什麼辦法連接一個原始的變量名,即使它不像那個語法那麼簡潔?
理想情況下,我想保留數組原樣,我不想將它們組合成更大的數組陣列,或將它們轉換成字典,但如果這是唯一的解決方案,我肯定會接受它。
<ul id="Foo">Foo</ul>
<ul id="Biz">Biz</ul>
arrayFoo = [
"first foo item",
"second foo item",
"third foo item"];
arrayBiz = [
"first biz item",
"second biz item",
"third biz item"];
$('ul').click(function() {
listName = $(this).attr('id');
// hardcoding this var so demo works...
listArray = arrayBiz;
// I want to set listArray equal to (array + listName)
// but I'm not sure how. When working correctly,
// clicking #Foo should append the arrayFoo items,
// and clicking #Biz should append arrayBiz items.
listArray.forEach(function (listItem) {
$('#' + listName).append('<li>' + listItem + '</li>');
});
});
https://jsfiddle.net/m841o7ys/6/ 不過我建議你incapsulate你的數據給對象。請參閱@ RoryMcCrossan的答案... –