0

我正在创建一个循环,该循环查找类中包含字符“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 = '';
        }
}
4

3 回答 3

3

你做错了。

iinfor .. 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 = "";
    }
}
于 2013-04-16T15:25:57.853 回答
1

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

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

或者

for (var i = 0, i < letts.length; i++) {
...
于 2013-04-16T15:29:01.433 回答
0

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

数组有一个forEach方法,但NodeLists 没有,出于某种原因。您可以使用以下之一:

  • .forEachunderscore.js 的功能
  • .eachJQuery(或几乎任何框架)的功能
  • [].forEach.call() 诀窍
于 2013-04-16T15:32:25.480 回答