2016-12-04 26 views
2

我已經做到了這一點:HTML發現並停止顯示錶子

<table id="tabla"> 
    <tbody> 
     <tr><th>row1</th><td>w</td></tr> 
     <tr><th>row2</th><td>x</td></tr> 
    </tbody> 
    <tbody> 
     <tr><th>row1</th><td>y</td></tr> 
     <tr><th>row2</th><td>z</td></tr> 
    </tbody> 
</table> 

<script type="text/javascript"> 
    function iterate() { 
     var table = document.getElementById("tabla").children; 
     for (b=0; b<table.length(); b++) { 
      var cells = table[b].children; 
      if(cells[0].innerHtml == "row1") { 
       if(cells[1].innerHtml == "w") { 
        table[b].style.display="none"; 
       } 
      } 
     } 
    } 
</script> 

我的目的是要找到滿足條件並停止顯示的表格中的所有兒童。

我的代碼不工作,我不知道爲什麼。

有誰知道嗎?

+1

table.length()不是函數。刪除括號並使用'table.length'代替 – Punit

+1

,用'iterate()'調用你的函數。 – Punit

+1

爲什麼你有多個'tbody'元素? – NtFreX

回答

4
  1. table元素的孩子們tbody
  2. 沒有length()功能,它是一個屬性(只使用length
  3. 沒有innerHtml,你應該使用innerHTML
  4. cells[0]你指的其實是行(而不是細胞),因此它的innerHTML == <th>row1</th><td>w</td>

這裏是修復你的代碼:

function iterate() { 
 
    var table = document.getElementById("tabla").children; 
 
    for (b=0; b<table.length; b++) { 
 
    var rows = table[b].children; 
 
    for (r=0; r<rows.length;r++) { 
 
     var cells = rows[r].children 
 
     if (cells[0].innerHTML == "row1") { 
 
     if (cells[1].innerHTML == "w") { 
 
      table[b].style.display="none"; 
 
     } 
 
     } 
 
    } 
 
    } 
 
} 
 

 
iterate();
<table id="tabla"> 
 
    <tbody> 
 
     <tr><th>row1</th><td>w</td></tr> 
 
     <tr><th>row2</th><td>x</td></tr> 
 
    </tbody> 
 
    <tbody> 
 
     <tr><th>row1</th><td>y</td></tr> 
 
     <tr><th>row2</th><td>z</td></tr> 
 
    </tbody> 
 
</table>

+0

我有多個tbody,因爲我想分組一些行,使他們作爲一個工作。如何在不使用tbody的情況下對行進行分組? – Sergio

+0

非常感謝您的回答,但我認爲這不能正常工作。 – Sergio

+0

它適用於第一個tbody,但是如果我想停止顯示第二個tbody(row1:y)不起作用。 – Sergio

1

function iterate() { 
 
     var table = document.getElementById("tabla").children; 
 
     
 
     for (b=0; b<table.length; b++) { 
 
      var cells = table[b].children; 
 
      
 
      if(cells[0].children[0].innerHTML == "row1") { 
 
       if(cells[0].children[1].innerHTML == "w") { 
 
        table[b].style.display="none"; 
 
       } 
 
      } 
 
     } 
 
    } 
 
iterate();
*{ 
 
background-color:pink; 
 
}
<table id="tabla"> 
 
    <tbody> 
 
     <tr><th>row1</th><td>w</td></tr> 
 
     <tr><th>row2</th><td>x</td></tr> 
 
    </tbody> 
 
    <tbody> 
 
     <tr><th>row1</th><td>y</td></tr> 
 
     <tr><th>row2</th><td>z</td></tr> 
 
    </tbody> 
 
</table>

+0

感謝您的回答! :-) – Sergio

+0

@Sergio接受它,如果你有答案 – Mahi

0

我解決它像這樣:

var table = document.getElementById("tabla").children; 
    for (b=0; b<table.length; b++) { 
     var rows = table[b].children; 
     var cells = rows[0].children; 
     if (cells[0].innerHTML == "row1") { 
      if (cells[1].innerHTML != "x") { 
       table[b].style.display="none"; 
      } else { 
       table[b].style.display="block"; 
      } 
     } 
    } 

我不遍歷每個tbody的所有元素,因爲我只對第一個元素感興趣。