隐藏表JavaScript中的列

Ran*_*Guy 14 html javascript

这个脚本在我在表中添加表时停止工作,那么如何使它工作?我不需要任何jQuery解决方案,我想要纯JavaScript.这是我在互联网上找到的脚本:

<script>

  function show_hide_column(col_no, do_show) {

    var stl;
    if (do_show) stl = 'block'
    else         stl = 'none';

    var tbl  = document.getElementById('id_of_table');
    var rows = tbl.getElementsByTagName('tr');

    for (var row=1; row<rows.length;row++) {
      var cels = rows[row].getElementsByTagName('td')
      cels[col_no].style.display=stl;
    }
  }

</script>
Run Code Online (Sandbox Code Playgroud)

这是我的HTML:

<table id='id_of_table' border=1>
  <tr><td colspan="4"><table><tr><td></td></tr></table></td></tr>
  <tr><td>  2</td><td>   two</td><td>   deux</td><td>     zwei</td></tr>
  <tr><td>  3</td><td> three</td><td>  trois</td><td>     drei</td></tr>
  <tr><td>  4</td><td>  four</td><td>quattre</td><td>     vier</td></tr>
  <tr><td>  5</td><td>  five</td><td>   cinq</td><td>f&uuml;nf</td></tr>
  <tr><td>  6</td><td>   six</td><td>    six</td><td>    sechs</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

这是我的表格:

<form>
  Enter column no: <input type='text' name=col_no><br>
  <input type='button' onClick='javascript:show_hide_column(col_no.value,  true);' value='show'>
  <input type='button' onClick='javascript:show_hide_column(col_no.value, false);' value='hide'>
</form>
Run Code Online (Sandbox Code Playgroud)

Ein*_*eki 23

如果您可以利用col标记解决方案,在纯JavaScript中,很简单:

<table id='id_of_table' border=1>
  <col class="col1"/>
  <col class="col2"/>
  <col class="col3"/>
  <col class="col4"/>
  <tr><td colspan="4"><table><tr><td></td></tr></table></td></tr>
  <tr><td>  2</td><td>   two</td><td>   deux</td><td>     zwei</td></tr>
  <tr><td>  3</td><td> three</td><td>  trois</td><td>     drei</td></tr>
  <tr><td>  4</td><td>  four</td><td>quattre</td><td>     vier</td></tr>
  <tr><td>  5</td><td>  five</td><td>   cinq</td><td>f&uuml;nf</td></tr>
  <tr><td>  6</td><td>   six</td><td>    six</td><td>    sechs</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

您可以只为几个css属性应用col,但可见性就是其中之一

function show_hide_column(col_no, do_show) {
   var tbl = document.getElementById('id_of_table');
   var col = tbl.getElementsByTagName('col')[col_no];
   if (col) {
     col.style.visibility=do_show?"":"collapse";
   }
}
Run Code Online (Sandbox Code Playgroud)

参考文献:

  • 希望也能使用它,因为我有一个带有`<col>`元素的表,但由于某种原因,Chrome设置`visibility = collapse`对我来说不起作用:( (9认同)
  • 这样的耻辱似乎并不普遍,因为这是一个完美的解决方案 - 它正是`<col>`的用途.Firefox还可以,但它在基于WebKit的浏览器中不起作用(我测试过chrome和safari) (4认同)
  • 如果您希望在Google Chrome中使用此功能,请通过https://bugs.chromium.org/p/chromium/issues/detail?id=174167投票选择该错误 (4认同)
  • +1,太好了!我什至都不知道`col`标签...每天学习一些东西。:-) (2认同)

PPv*_*PvG 9

您可以使用children并检查他们tagName以确保他们是td.像这样的东西:

function show_hide_column(col_no, do_show) {
    var tbl = document.getElementById('id_of_table');
    var rows = tbl.getElementsByTagName('tr');

    for (var row = 0; row < rows.length; row++) {
        var cols = rows[row].children;
        if (col_no >= 0 && col_no < cols.length) {
            var cell = cols[col_no];
            if (cell.tagName == 'TD') cell.style.display = do_show ? 'block' : 'none';
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:这是一个有效的例子:http://jsfiddle.net/3DjhL/2/.

编辑:事实上,我只记得rowscols属性,这使它更简单.请参阅http://jsfiddle.net/3DjhL/4/以查看它的实际效果.

function show_hide_column(col_no, do_show) {
    var rows = document.getElementById('id_of_table').rows;

    for (var row = 0; row < rows.length; row++) {
        var cols = rows[row].cells;
        if (col_no >= 0 && col_no < cols.length) {
            cols[col_no].style.display = do_show ? '' : 'none';
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

哦,如果你认为列数应该从1开始(它们没有),你将不得不在某处偏移.例如在顶部show_hide_column():

col_no = col_no - 1;
Run Code Online (Sandbox Code Playgroud)