[英]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.