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