2

以下のコードでは、javascript を使用して「偶数」クラスを動的に割り当てることにより、すべての偶数行に異なる背景色を適用しています。bodyタグのonload関数alternamte()を呼び出しています。

最初は、getElementById を使用してテーブル オブジェクトを取得していましたが、コードは正常に機能しました。ただし、このスタイル設定をページのすべてのテーブルに適用すると想定しているため、タグ名で要素を取得する必要があります。

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>
4

3 に答える 3

4

getElementsByTagName()、複数形です。HTMLCollection を返します

var table = document.getElementsByTagName("table")[0];   

(ページに があると確信している場合<table>。)

すべて<table>要素に対して何かをしたい場合は、次のようにする必要があります。

    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"; 
        }     
      }   
    }
于 2012-10-29T16:04:54.047 に答える
1

(getElementsByTagName return multiple node elements) のgetElementsByTagName代わりに使用getElementByTagName

 var table = document.getElementsByTagName("table")[0], trs, rl;  
 vat tl= table.length;
 while(tl--){
        trs = tables[tl].getElementsByTagName("tr");
        rl = trs.length;
        while(rl--){
           if(rl % 2 == 0){ 
              trs[rl].className = "even"; 
           } 
        }
  }
于 2012-10-29T16:04:28.727 に答える
-2

getElementsByTagName() は、セレクターに一致する配列を返します。したがって、試してください

var table = getElementsByTagName('table')[indexnumber];
于 2012-10-29T16:10:00.953 に答える