在div ID之前添加#而不创建HTMLDivElement

时间:2011-12-11 02:10:41

标签: javascript jquery

我有一个div名称数组(没有哈希),我正在使用以下jQuery代码对它们做一些事情:

for(dayList in dayLists) {
  dayListID = "#" + dayList;
  $(dayListID).append("test");
}

不幸的是,它不起作用。我可以在控制台中看到dayListID是一个“HTMLDivElement”,而不是JQ期望的字符串。如何在将结果保持为字符串的同时加入哈希值和div名称?谢谢!

3 个答案:

答案 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"],变量dayList0, 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");
}