【问题标题】:Counting the number of rows in an HTML table except don't count the <th></th> as a row计算 HTML 表中的行数,除了不将 <th></th> 计为一行
【发布时间】:2013-12-28 09:20:05
【问题描述】:

我需要你的帮助,

如果下面的代码计算表格中的每个表格行,如何修改它以使代码不会将 &lt;th&gt;&lt;/th&gt; 本身计算为一行?

var rows = document.getElementById("data").rows.length;

【问题讨论】:

  • 你的表使用thead/tbody吗?
  • 张贴您的 HTML 以便我们提供帮助。
  • 没有 或 只使用 表>

标签: javascript dom html-table rows


【解决方案1】:

你应该使用 thead 和 tbody

HTML:

<table id="data">
    <thead>
        <tr><th>Hz</th></tr>
    </thead>
    <tbody>
        <tr><td>1</td></tr>
        <tr><td>2</td></tr>
        <tr><td>3</td></tr>
    </tbody>
</table>

JavaScript:

var rows = document.getElementById("data").getElementsByTagName("tbody")[0].rows.length;

JSFiddle

【讨论】:

  • 他没有身体
  • 好吧,也许 OP 应该花 30 秒时间添加一个。 :)
  • 我会添加一个,这似乎是最简单的选择。我会在 5 分钟内接受这个答案。非常感谢。
  • 这个标记会失败:
  • @SilviuBurcea 我不认为这是 OP 担心的。
【解决方案2】:

在不修改 HTML 标记的情况下,您必须自己计算正确的行数:

var rows = document.getElementById("data").rows
var count = 0;
for (var i=0; i< rows.length; i++) {
    if (rows[i].cells[0].tagName != 'TH') count++
}
console.log(count)

演示:http://jsfiddle.net/cHW6z/

【讨论】:

  • 这个标记会失败:
【解决方案3】:

凭借对 jQuery 的热爱,如果你不想用纯 JS 来做:

$('#tableId tr').filter(function() { 
    return $(this).find('th').size() == 0;
}).size();

【讨论】:

    【解决方案4】:

    看看这个JSFiddle,我试过的代码是:

    var rows = document.getElementById('data').getElementsByTagName('tr');
    var count = 0;
    for(var i = 0; i < rows.length; i++)
    {    
        if (rows[i].getElementsByTagName('th').length == 0)
            count++;
    }
    alert(count);
    

    【讨论】:

      猜你喜欢
      • 2016-02-17
      • 2016-07-29
      • 2019-04-03
      • 2023-03-12
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多