繁体   English   中英

使用for循环在javascript中选择dom

[英]Use for loop to select dom in javascript

令人沮丧的是,我们无法使用类似的代码选择JSON元素(或任何元素):

//An JSON object is parsed into Response beforehand
for(var count = 1; count <= Response.objCount; count ++) {
  console.log(Response.obj+count.content);
}

在代码中,我想输出一个这样的JSON对象:

{ "objCount" : 2 ,
  "obj1" : { "result" : true ,
             "content" : "blah blah 1" } ,
  "obj2" : { "result" : true ,
             "content" : "blah blah 2" } }

但不,我们不能在Javascript中使用变量作为整体或部分标识符。那么,当我想输出每个对象时,有关如何处理这些JSON对象的任何建议吗?

谢谢!

如果“响应”是你的结构,那么你确实可以做你所要求的:

for(var key in Response) {
  console.log(Response[key].content);
}

您不能循环“长度”,因为“响应”不是数组,而普通对象没有“长度”属性。

现在,一个问题是你不能确定你会以任何特定的顺序获得组件。 也就是说,上面的循环可能会在你得到“obj1”之前给你“obj2”。 您可以通过几种方式解决该问题。 首先,您可以重新考虑数据结构并将其存储为数组。 或者,您可以获取密钥并对其进行排序,然后遍历排序的属性名称数组。

var keys = Object.keys(Response);
keys.sort(function(key1, key2) {
  // comparison ...
});
for (var count = 0; count < keys.length; ++count)
  console.log(Response[keys[count]].content);

Object.keys()函数仅适用于较新的浏览器,但您可以使用for ... in循环来执行类似的技巧以for ... in属性名称。

编辑 - 使用包含您自己的显式属性的更新结构,您可以使用plain for循环:

for (var count = 1; count <= Response.objCount; ++count)
  console.log(Response["obj" + count].content);

使用括号以属性名称作为字符串访问属性:

Response["obj" + count].content

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM