不确定如何标题这个问题,但我尽力凝聚它。 我有一个键/值数组,我需要循环并打印出选择字段的选项。我的问题是我需要将ID与数组中的值匹配,并为该选项提供选定的属性。
**无法使用ES6语法**
我的阵列:
groups =
[
{ name:"eng1",
value: "12"
},
{ name: "eng2",
value: "247"
},
{ name: "eng23",
value: "112"
},
];
我的循环:
var targetGroupId = 247;
for (i = 0; i < groups.length; i++) {
if (groups[i].Value = targetGroupId) {
html += "<option value'" + groups[i].Value + "' selected='selected'>" + groups[i].Name + "</option>";
} else {
html += "<option value='" + groups[i].Value + "'>" + groups[i].Name + "</option>";
}
}
我需要打印出数组中的所有三个项目作为选项。但是,匹配targetGroupId
的项目需要具有所选属性。
非常感谢任何指导!
答案 0 :(得分:3)
=
进行比较,而不是===
。
var groups = [{name: "eng1",value: "12"},{name: "eng2",value: "247"},{name: "eng23",value: "112"},],
html = '',
targetGroupId = 247;
for (var i = 0; i < groups.length; i++) {
if (/*Convert to number ->*/+groups[i].value === targetGroupId) {
html += "<option value'" + groups[i].value + "' selected='selected'>" + groups[i].name + "</option>";
} else {
html += "<option value='" + groups[i].value + "'>" + groups[i].name + "</option>";
}
}
console.log(html);
&#13;
答案 1 :(得分:0)
您的代码存在以下问题:
Value
属性而不是value
。将Value
替换为代码中的value
。其次,您需要更正此声明
if (groups[i].Value = targetGroupId) {
到此:
if (groups[i].value == targetGroupId) {
我已使用==
自动强制比较值,因为targetGroupId
是一个数字,而对象中的value
是一个字符串。
答案 2 :(得分:0)
键名称区分大小写。所以Value
&amp; Name
需要与案例匹配
value
也是字符串,但targetGroupId
是整数。所以需要将字符串转换为数字,反之亦然。
在groups[i].Value = targetGroupId
旁边不对,您需要进行质量检查,而不是分配值
var groups = [{
name: "eng1",
value: "12"
},
{
name: "eng2",
value: "247"
},
{
name: "eng23",
value: "112"
},
];
var html = '';
var targetGroupId = 247;
for (i = 0; i < groups.length; i++) {
if (+groups[i].value === targetGroupId) {
html += "<option value'" + groups[i].value + "' selected='selected'>" + groups[i].name + "</option>";
} else {
html += "<option value='" + groups[i].value + "'>" + groups[i].name + "</option>";
}
}
document.getElementById('test').innerHTML = html
&#13;
<select id='test'></select>
&#13;