对于循环javascript没有分配正确的值

时间:2013-04-16 15:24:11

标签: javascript

我正在创建一个循环,它查找类中包含字符“L”并对每个元素执行innerHTML命令的所有元素。这个循环似乎工作正常,直到我实际做i.innerHTML ='',其中i是L字符串的数组。为什么我不能这样做呢?如果我做一个console.log(i);在if语句中,我得到了正确的数组。

letts = document.getElementsByClassName('span2');
for(i in letts){
        if(i.indexOf('L') !== -1){
                i.innerHTML = '';
        }
}

3 个答案:

答案 0 :(得分:3)

你做错了。

i循环中的

for .. in是指对象属性名称。最好使用简单的NodeList循环迭代for个集合(作为数组),如下所述。

var letts = document.getElementsByClassName("span2");
for (var i = 0, len = letts.length; i < len; i++) {
    if (letts[i].innerHTML.indexOf("L") > -1) {
        letts[i].innerHTML = "";
    }
}

答案 1 :(得分:1)

你的i in - in循环是指index(基于0)。你应该使用

for(i in letts){
        if(letts[i].indexOf('L') !== -1){
   ...

for (var i = 0, i < letts.length; i++) {
...

答案 2 :(得分:0)

在这种情况下,foreach循环很方便。

数组有一个forEach方法,但由于某些原因NodeList没有。您可以使用以下其中一个:

  • .forEach underscore.js的功能
  • .each JQuery的功能(或几乎任何框架)
  • [].forEach.call() trick