2012-10-29 16 views
1

在下面的代碼中,我通過使用javascript動態地爲它們分配類「even」來爲所有偶數行應用不同的背景顏色。我正在調用body標籤的loadamte()函數onload。getElementByTagName不起作用?

起初,我使用getElementById來獲取表格對象,我的代碼工作正常。不過,我想將這個樣式應用於我的頁面上的所有表格,所以我需要通過標記名稱使用get元素。

一旦我將chane變成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> 
+2

請保持您的開發者控制檯處於打開狀態。它會指出錯誤 –

+0

我建議你使用調整你的代碼來使用'rows [i] .className + =「even」;'來說明任何可能已經有類的行。你的方法覆蓋它們。 – TheZ

+0

[我增加了額外的武器。](http://theminorityreport.co/stixblog/files/2012/07/demotivational-posters-quadruple-facepalm.jpg) – 2012-10-29 16:07:32

回答

3

這是getElementsByTagName(),複數。它返回一個節點列表。

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"; 
     }  
     } 
    } 
+0

感謝您的答覆,這對我工作:)但是,因爲我們添加' [0]',這並不意味着這種風格只適用於頁面上的第一張表格嗎?如果我也想將這種風格應用於頁面上的所有表格? – AnchovyLegend

+0

@MHZ是的,這是正確的 - 我會延長我的回答... – Pointy

1

,而不是使用getElementByTagNamegetElementsByTagName(的getElementsByTagName返回多個節點單元)

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"; 
      } 
     } 
    } 
+0

感謝您的回覆。我改變它getElementsByTagName和它仍然不工作:( – AnchovyLegend

+0

對不起,我很忙,我知道你已經得到了你的答案,這是另一種方式 – Anoop

-2

getElementsByTagName()返回一個匹配選擇器的數組。因此請嘗試

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

沒有'getElementByTagName()'函數... – Pointy

+2

也沒有'getElementsByTagName()'函數。它應該是元素或文檔的一種方法。 –

+0

糟糕!對不起...感謝您糾正我的錯誤 – selvagsz