这有效(填充生成的下拉菜单):
$('dropdown_options').innerHTML = ' ';
jsonResponse.forEach(function(element){
$('dropdown_options').innerHTML += '<option value='+ element.size + '>' element.size + '</option>';
});
但是element.size
是一个数字,我需要信件。因此我做了以下功能:
getLetterOfSizeNumber: function(number) {
var size_letter = null;
switch (number) {
case 44:
size_letter = 'XS';
break;
case 45:
size_letter = 'S';
break;
case 46:
size_letter = 'M';
break;
case 47:
size_letter = 'L';
break;
case 48:
size_letter = 'XL';
break;
case 49:
size_letter = 'XXL';
break;
default:
break;
}
return size_letter;
}
然后我这样做:
jsonResponse.forEach(function(element){
$('dropdown_options').innerHTML += '<option value='+ element.size + '>' + myObject.getLetterOfSizeNumber(element.size) + '</option>';
我的下拉列表填充了null
个。建议?
答案 0 :(得分:4)
改为使用地图
var numberToSize = {
44: 'XS',
45: 'S',
46: 'M',
47: 'L',
48: 'XL',
49: 'XXL'
};
// (or just remove the function altogether)
getLetterOfSizeNumber: function(number) {
return numberToSize[number];
};
这适用于数字和字符串number
值,因为它们用于访问属性值。
答案 1 :(得分:1)
我的下拉列表中填充了空值。建议?
我会说你的element.size
会返回string
,而不是number
。这就是为什么你得到null
。
如果您在case-expression中使用字符串或替代使用parseInt(element.size)
来获取真实数字,那么您的代码将会起作用。
但更先进的方法是使用一个对象,其中数字为键,字母为值,如@Nico所述。
答案 2 :(得分:0)
试试这个。
switch(number) {
case 44:
return 'XS';
case 45:
return 'S';
case 46:
return 'M';
case 47:
return 'L';
case 48:
return = 'XL';
case 49:
return 'XXL';
default:
return '';
}