是否可以将对象中的所有值更改为0,而无需逐个输入?
这是对象示例:
var obj = {
sth: {
sth1: 15,
sth2: 25,
sth3: 0
},
}
将 obj.sth 的所有值设置为0,而无需输入:
obj.sth.sth1 = 0;
obj.sth.sth2 = 0;
obj.sth.sth3 = 0;
超过100个需要重置为0方法的值是一种痛苦。
另外,使用
document.getElementById(id1).innerHTML = obj.sth.sth1;
document.getElementById(id2).innerHTML = obj.sth.sth2;
document.getElementById(id3).innerHTML = obj.sth.sth3;
等等,在用户重置后更新值...为此,我正在考虑制作一个数组:
var ids = [
"sth1",
"sth2",
"sth3"
]
然后:
for( i = 0; i < 3; i ++) {
document.getElementById(ids[i]).innerHTML = "0";
}
更新HTML文档的方法好吗?我仍然需要在数组中键入所有id和值,但至少它会更透明。也许有更好的方法?我假设,要更新对象中的值,我还需要一个循环,但没有想到任何想法?谢谢!
答案 0 :(得分:1)
迭代一个对象:
for(var key in obj.sth) {
obj.sth[key] = 0;
}
并将值分配给html可能会为元素设置一个特定的类,然后迭代所有这些将帮助您更多而不是使用id
答案 1 :(得分:0)
您可以使用单个循环并分配给所有属性0
,并使用属性值设置元素。
使用
Object.keys
获取对象的所有属性
Array#forEach
用于迭代数组
var obj = { sth: { sth1: 15, sth2: 25, sth3: 0 } };
Object.keys(obj.sth).forEach(function (key) {
obj.sth[key] = 0;
document.getElementById(key).innerHTML = obj.sth[key];
});
console.log(obj);
<div id="sth1">foo</div>
<div id="sth2">foo</div>
<div id="sth3">foo</div>
答案 2 :(得分:0)
使用for in循环
for (prop in obj.sth) {
if(obj.sth.hasOwnProperty(prop)){
obj.sth[prop] = 0;
}
}