Javascript getElementByTagName不工作?

Javascript getElementByTagName不工作?,javascript,Javascript,在下面的代码中,我通过使用javascript动态地将类“偶数”分配给偶数行,将不同的背景色应用于所有偶数行。我在加载body标记时调用alternamte()函数 起初,我使用getElementById获取表对象,代码运行良好。但是,我想将此样式应用于页面上的所有表,因此我需要使用get element by tag name 一旦我更改了getElementByTagName,我的代码就停止工作了,我一直在试图找出问题的根源,但没有成功。我想知道是否有人能帮助我理解为什么我的代码在我更改g

在下面的代码中,我通过使用javascript动态地将类“偶数”分配给偶数行,将不同的背景色应用于所有偶数行。我在加载body标记时调用alternamte()函数

起初,我使用getElementById获取表对象,代码运行良好。但是,我想将此样式应用于页面上的所有表,因此我需要使用get element by tag name

一旦我更改了getElementByTagName,我的代码就停止工作了,我一直在试图找出问题的根源,但没有成功。我想知道是否有人能帮助我理解为什么我的代码在我更改getElementByTagName后停止工作

  <script type="text/javascript"> 
    function alternate(){
        var table = document.getElementsByTagName("table");   
        var rows = table.getElementsByTagName("tr");   

        for(i = 0; i < rows.length; i++){           
            //change style of even rows 
            //(odd integer values, since we're counting from zero)
            if(i % 2 == 0){ 
                rows[i].className = "even"; 
            }     
        }   
    }
  </script>

函数替换(){
var table=document.getElementsByTagName(“表”);
var rows=table.getElementsByTagName(“tr”);
对于(i=0;i
使用
getElementsByTagName
而不是
getElementByTagName
(getElementsByTagName返回多个节点元素)

它是复数形式。它返回一个HTMLCollection

var table = document.getElementsByTagName("table")[0];   
(如果您确信页面上有一个
。)

如果要对所有
元素执行操作,必须执行以下操作:

    var tables = document.getElementsByTagName("table");   

    for (var ti = 0; ti < tables.length; ++ti) {
      var rows = tables[ti].getElementsByTagName("tr");   
      for(var i = 0; i < rows.length; i++){           
        //change style of even rows 
        //(odd integer values, since we're counting from zero)
        if(i % 2 == 0){ 
            rows[i].className = "even"; 
        }     
      }   
    }
var tables=document.getElementsByTagName(“表”);
对于(变量ti=0;ti
getElementsByTagName()返回与选择器匹配的数组。因此尝试

var table = getElementsByTagName('table')[indexnumber];

请保持开发人员控制台打开。它会指出错误,我建议您使用调整代码以使用
行[i].className+=“偶数”以说明可能已经有类的任何行。您的方法将覆盖它们…仅供参考,您不需要第二个
getElementsByTagName(“tr”)
,您只需使用表的
.rows
集合,谢谢您的回复。我将其更改为getElementsByTagName,但它仍然不起作用:(抱歉,我很忙。我知道您已经得到了答案,这是另一种方式。感谢您的回复,这对我很有效:)但是,由于我们正在向您的代码中添加“[0]”,这是否意味着此样式仅应用于页面上的第一个表?如果我想在页面上的所有表中都应用此样式,该怎么办?也没有
getElementsByTagName()
函数。它应该是元素或文档的方法,。
var table = getElementsByTagName('table')[indexnumber];