我有一个div名称数组(没有哈希),我正在使用以下jQuery代码对它们做一些事情:
for(dayList in dayLists) {
dayListID = "#" + dayList;
$(dayListID).append("test");
}
不幸的是,它不起作用。我可以在控制台中看到dayListID
是一个“HTMLDivElement”,而不是JQ期望的字符串。如何在将结果保持为字符串的同时加入哈希值和div名称?谢谢!
答案 0 :(得分:6)
不要使用for...in
循环来迭代数组。使用常规的ol'for
循环:
for(var i=0; i<dayLists.length; i++) {
dayListID = "#" + dayLists[i];
$(dayListID).append("test");
}
亲眼看看有什么区别:http://jsfiddle.net/mattball/h9hpr/
答案 1 :(得分:2)
试试这个:
for(dayList in dayLists) {
dayListID = "#" + dayLists[dayList];
$(dayListID).append("test");
}
dayList
中的 for .. in
不是dayLists
的第i个值,但它是索引。因此,对于数组["one", "two"]
,变量dayList
为0, 1
并且要获取值,您必须使用dayLists[dayList]
。
正如 Matt 在评论中所写,最好使用hasOwnProperty
来确保我们循环的属性是对象所拥有的。
for(dayList in dayLists) {
if(dayLists.hasOwnProperty(dayList) {
dayListID = "#" + dayLists[dayList];
$(dayListID).append("test");
}
}
...然后你意识到标准的简单for
循环(由MДΓΓБДLL回答)实际上是一个更好的主意。标准for
也更快。
查看详情 HERE 。
答案 2 :(得分:2)
你应该使用这个:
dayLists = ["something", "somethingElse"];
for(var i=0; i<dayLists.length; i++){
$("#" + dayList[i]).append("test");
}