2017-01-10 108 views
0

我想創建一個選項下拉列表使用jQuery從HTML附加數組。追加選項標籤,以選擇使用JQuery數組中的標籤

除開始&之間的文本之外,一切似乎都正常工作,結束標記未出現。我真的很累,我錯過了一個簡單的錯字或做錯了什麼?!?

的JS和jQuery代碼是:

var displayMenuSelections = function(){ 
    var menuSelection = menu[0].prices[0]; 
    var menuItems = Object.keys(menuSelection); 
    menuItems.forEach(menuFunction); 
} 

function menuFunction(item){ 
    $('#menu').append($('<option value="' + item + '">' + item + '</option')); 
} 

典型的選項標記的結果看起來是這樣的(與「項目」的開始和結束標記之間丟失):

<option value="Cafe Latte"></option> 

回答

1

您忘記了關閉選項標籤的>。 JQuery試圖爲你關閉它,在這個過程中,內部項目文本不會被設置。但是在這種情況下,由於沒有引發錯誤/異常,它使得調試變得更加困難。在這種情況下,Jquery採用了一種哲學,它試圖與任何你提供的東西一起工作 - 這可以是好的也可以是不好的。

var displayMenuSelections = function(){ 
    var menuSelection = menu[0].prices[0]; 
    var menuItems = Object.keys(menuSelection); 
    menuItems.forEach(menuFunction); 
} 

function menuFunction(item){ 
    $('#menu').append($('<option value="' + item + '">' + item + '</option>')); 
} 
+0

非常感謝你,它已經很晚了,我很累,我發誓我檢查了100次,看不到任何東西!我的錯! – PaulWallis42

-1

它看起來像你沒有通過你的參數

item 

你的功能

menuFunction(item) 

我只是假設你要發送

var menuSelection 

,所以你可以嘗試改變你的函數調用

menuItems.forEach(menuFunction(menuSelection)); 

我還沒有測試但這個!

+1

這是不正確的。 javascript forEach方法將調用該對象的每個元素傳遞給該函數。因此'menuItems.forEach(menuFunction)'會將menuItems對象的每個元素傳遞給menuFunction。 – VKK