Web サイトの特定のメニューの基礎となるオブジェクトの配列があります。JavaScript を使用してビルドされます。
[
{"menuName":"Contact Info","sectionName":"contacts"},
{"menuName":"Facilities","sectionName":"facilities"},
{"menuName":"Locations","sectionName":"locations"},
{"menuName":"Packages","sectionName":"packages"},
{"menuName":"Policies","sectionName":"policies"},
{"menuName":"Reviews","sectionName":"reviews"},
{"menuName":"Rooms","sectionName":"rooms"}
]
そこで、インデックスと長さを処理する必要がないように、「for in ループ」を使用することにしました。メニューがビルドされると、メニューに 7 つの項目が表示されることを期待しています ( と を使用<ul>
します<li>
)。
デバッグ中に誤って に背景色を追加してしまった<li>
とき、すべての地獄が解き放たれました。<li>
7 番目のメニューが表示された後、少なくとも 30 個が空であることがわかりました<li>
。
なぜこうなった?
編集:
これがループです。ループは、後で解析する別の関数の別のオブジェクトを作成します。(前の配列によって提供されるプロパティを持つ<li>
with を作成します。) この "for-in" ループを通常の for ループまたは while ループに変更すると、正常に動作するため、他の関数が正常に動作することがわかっています。<a>
this.sectionList = function(menu, id) {
var list = new Array();
for(var i in menu) {
var listItem = {
"element" : "li",
"contains" : [{
"element" : "a",
"attr" : {
"href" : menu[i].sectionName + ':' + id
},
"contains" : menu[i].menuName
}]
}
list.push(listItem);
}
}