2017-01-10 71 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