簡體   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