【发布时间】:2011-10-21 22:05:15
【问题描述】:
我有一组对象,它们将成为我网站中某个菜单的基础。它将使用 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 循环”,这样我就不必处理索引和长度了。我希望在构建时菜单中会出现七个项目(我将使用<ul> 和<li>)。
当我在调试时,不小心给<li> 添加了背景颜色,这时候一切都乱套了。在可见的第 7 个菜单 <li> 之后,我发现至少 30 个空的 <li>。
为什么会这样?
编辑:
这是循环。该循环为稍后解析的另一个函数创建另一个对象。 (它创建了一个<li>,内部有一个<a>,其属性由前一个数组提供。)我知道另一个函数工作正常,因为当我将这个“for-in”循环更改为普通的for循环或while循环时,它工作正常。
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);
}
}
【问题讨论】:
-
谁知道?你能用你的代码展示你在做什么吗?
-
你能把你的循环代码粘贴进去吗?
-
你是如何添加背景颜色的?
-
我的 ESP 今天不工作了。请实际解释您的问题。您的问题中没有
<li>-generating 代码,您不应该使用for in遍历数组。 -
for in loops用于迭代对象成员,not for 用于迭代数组。.length属性真的有这么多需要处理吗?
标签: javascript arrays object loops for-in-loop