-1

我有一个函数,我在 javascript 中使用它来突出显示由同一类命名的给定表的每隔一行...我遇到了一个问题,代码运行良好,但它只会检测到第一个表用那个类命名...我需要它来为每个用同一类命名的表执行任务。

我已经尝试了一些东西,但没有任何效果......有什么建议吗?谢谢!

这是我正在使用的东西

  function start(){
     var list=document.getElementsByClassName("highlight");
     for(i=0; i<list.length; i++){
     var element= list[i].getElementsByTagName("tr");

for(i=0; i<element.length; i++)
{
    if (i%2 == 0) {
        element[i].className = "odd"
    }
    else{
        element[i].className = "even";
    }
  }
    }
  }

   window.addEventListener("load", start, false);
4

2 回答 2

1

您需要在内部 for 语句中使用不同的变量。

在此处查看工作示例:http: //codepen.io/anon/pen/wsCxG

window.onload = start;

function start(){
    var list=document.getElementsByClassName("highlight");

    for(i=0; i<list.length; i++)
     {
         var element= list[i].getElementsByTagName("tr");

        for(j=0; j<element.length; j++)
        {
            if (j%2 == 0) {
                element[j].className = "odd"
            }
            else{
                element[j].className = "even";
            }
          }
    }
}
于 2013-11-08T00:14:39.333 回答
0

纯css3呢?

tr:nth-child(odd) {
 background-color: green;
}
tr:nth-child(even) {
 background-color: red;
}

带亮点

.highlight tr:nth-child(odd) {
 background-color: green;
}
.highlight tr:nth-child(even) {
 background-color: red;
}

例子

http://jsfiddle.net/RppAT/

如果你想要 js (速记+while--)

function OE(){
 var lists=document.getElementsByClassName("highlight"),listsLength=lists.length;
 while(listsLength--){
  var trs=lists[listsLength].getElementsByTagName("tr"),trsLength=trs.length;
  while(trsLength--){
   trs[trsLength].className=(trsLength%2==0)?'odd':'even';
  }
 }
}
window.onload=OE;
于 2013-11-08T00:34:07.113 回答