Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将js对象中的所有值更改为0_Javascript_Arrays_Loops_Object - Fatal编程技术网

Javascript 将js对象中的所有值更改为0

Javascript 将js对象中的所有值更改为0,javascript,arrays,loops,object,Javascript,Arrays,Loops,Object,是否可以将对象中的所有值更改为0,而不必逐个键入它们 以下是对象示例: var obj = { sth: { sth1: 15, sth2: 25, sth3: 0 }, } 将对象sth的所有值设置为0,无需键入: obj.sth.sth1 = 0; obj.sth.sth2 = 0; obj.sth.sth3 = 0; 在上面的方法中,有超过100个值需要重置回0,这有点痛苦 此外,使用 document.getElementById(id1).innerHTML = o

是否可以将对象中的所有值更改为0,而不必逐个键入它们

以下是对象示例:

var obj = {
 sth: {
  sth1: 15,
  sth2: 25,
  sth3: 0
 },
}
将对象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";
}
(i=0;i<3;i++)的
{
document.getElementById(id[i]).innerHTML=“0”;
}

更新HTML文档的方法好吗?我仍然需要在一个数组中键入所有ID和值,但至少它会更透明。也许有更好的方法?我假设,要更新一个对象中的值,我还需要一个循环,但我没有想到。。。有什么想法吗?谢谢

您可以使用单个循环,并将其分配给所有属性
0
,并使用属性的值设置元素

使用

  • 用于获取对象的所有自有属性

  • 用于迭代数组

var obj={sth:{sth1:15,sth2:25,sth3:0};
对象。键(obj.sth)。forEach(函数(键){
对象某物[键]=0;
document.getElementById(key).innerHTML=obj.sth[key];
});
控制台日志(obj)
foo
福

foo要在对象中迭代,请执行以下操作:

for(var key in obj.sth) {
  obj.sth[key] = 0;
}
要给html赋值,可能需要为元素设置一个特殊的类,然后对所有元素进行迭代,这对您的帮助更大,而不是使用id

for (prop in obj.sth) {
 if(obj.sth.hasOwnProperty(prop)){
  obj.sth[prop] = 0;
 }
}

0!=='0'
…可能会帮助您
getElementById(k)
中的
k
是什么?键入错误,应该是
key
这是私有函数吗?我是JS新手,并不完全了解如何使用它们,但我也会尝试这种方法,看看哪种方法效果最好。谢谢你是说getElementsByClassName?以前从来没有这样想过,这实际上是一个非常好的主意!我会马上调查的。我决定接受这个答案。我完全能理解它的功能和工作原理。谢谢,也谢谢大家的帮助。