未定义显示在选项中
undefined is showing up in options
在JS 中
var vehicleData = [{year: 2015, make: "Audi", model: "A4"},
{year: 2014, make: "Benz", model: "c2000"},
{year: 2015, make: "Maruti", model: "s-cross"},
{year: 2015, make: "Maruti", model: "WagonR"}
];
var uniqueNames=[];
for(var i = 0; i<vehicleData.length; i++){
buildDropdownYear(i);
}
function buildDropdownYear(n) {
var yearSelect = document.getElementById("selectMe");
var drop1 = document.createElement("option");
var carYear = buildCtrl(n, uniqueNames,"option");
yearSelect.appendChild(carYear);
}
function buildCtrl(n, data, ctrl){
for(var i = 0; i< vehicleData.length; i++){
if(uniqueNames.indexOf(vehicleData[i].year) === -1){
uniqueNames.push(vehicleData[i].year);
}
}
for(i = 0; i< uniqueNames.length; i++){
console.log(uniqueNames[i]);
}
var item = document.createElement(ctrl);
if(data){
item.innerHTML = data[n];
}
return item;
}
输出后,下拉列表中将显示未定义。我想要从年份部分[从json数据]的下拉列表中的唯一值。
我的plunker代码是:http://plnkr.co/edit/fMufqCctzHe4Umbpu6Ag?p=preview
这里有几个问题,一旦你开始制作其他下拉菜单,这些问题只会变得更糟,你应该总是尽可能多地抽象,这样你就可以反复使用你的功能:
这在一个功能中实现了您想要的功能:新的PLUNKER
var vehicleData = [{year: 2015, make: "Audi", model: "A4"},
{year: 2014, make: "Benz", model: "c2000"},
{year: 2016, make: "Maruti", model: "s-cross"},
{year: 2015, make: "Maruti", model: "WagonR"}
];
function buildDD(id){
var selector = document.getElementById(id);
var newDataArray = vehicleData.map(function(d) {
return d[id]
})
var uniques = newDataArray.reduce(function(a, b) {
if (a.indexOf(b) === -1) {
a.push(b);
}
return a;
}, []);
uniques.forEach(function(el) {
var opt = document.createElement('option');
opt.innerHTML = el;
selector.appendChild(opt)
})
return newDataArray;
}
buildDD('year')
buildDD('make')
buildDD('model')
相关文章:
- 根据所选选项显示/隐藏不同的表单
- HTML 表单字段根据从下拉列表中选择的选项显示/隐藏
- 根据所选选项显示文本
- 禁用浏览器自动选项(显示输入元素中保存的单词)
- 基于所选选项显示asp:TextBox的JavaScript
- 更改选项显示当前时间
- 根据下拉列表中的选定选项显示详细信息
- 如何根据选中的选项显示文本数组
- 根据单独选择的选项显示 HTML 选项
- jQuery不能基于选择选项显示/隐藏元素
- Javascript cookie 用于保存用户首选项并使用共享首选项显示内容
- 根据选择框中的选项显示单选按钮
- 如何在asp.net web应用程序中使用javascript根据下拉列表中选择的选项显示不同的输入类型
- 下拉选项应根据上一个选项显示
- jQuery:根据所选选项显示/隐藏元素
- 选择选项显示/隐藏IE9问题
- 为'
- 我的下拉选项显示按钮时,它不应该'
- 根据选择的选项显示一个Div(带有计算值)——Angular
- 根据带有自定义值属性的选择选项显示图像