json对象推送使用循环中的最后一项覆盖所有项目?
Posted
技术标签:
【中文标题】json对象推送使用循环中的最后一项覆盖所有项目?【英文标题】:json object push overwrite all item using last item in the loop? 【发布时间】:2020-04-05 14:18:51 【问题描述】:var options = [];
$(b).each(function (a)
debugger;
s += '<option value=\'' + b[a].Material + '\'>' + b[a].Material + '</option>'
item = ;
item["name"] = b[a].Material;
item["value"] = b[a].Material;
item["checked"] = false;
options.push(item);
);
console.log(options);
s
的值为
<option value='MAB380-01'>MAB380-01</option>
<option value='MAB380-02'>MAB380-02</option>
在第一次迭代中,options
具有 MAB380-01
。
但是在第二次迭代之后,options
有两个 MAB380-02
。
Firefox 和 Chrome 给我正确的结果,但不是 IE。
【问题讨论】:
我看不出有什么问题。完全没问题。 jsfiddle.net/f67my2n0 @MahbubMoon 现在这很奇怪,这不是我在 IE 11 中得到的。 每个回调都有两个参数,第一个是索引,第二个是值。 jsfiddle.net/krwb2914。从@Mahbub Moon 修改。试试看 无法在 IE11 上重现 尝试在每个回调中控制日志值 【参考方案1】:var options = [];
$(b).each(function (a)
debugger;
s += '<option value=\'' + b[a].Material + '\'>' + b[a].Material + '</option>'
var item = new Object();
item.name = b[a].Material;
item.value = b[a].Material;
item.checked = false;
options.push(item);
);
console.log(options);
这些代码适用于 Chrome、Firefox 和 IE11。
【讨论】:
以上是关于json对象推送使用循环中的最后一项覆盖所有项目?的主要内容,如果未能解决你的问题,请参考以下文章