数据表:计算具有特定文本的行

时间:2014-08-04 19:46:15

标签: javascript jquery jquery-datatables css-selectors datatables-1.10

我有一个包含各种列和多行的表。为了简化这一点,我只需要知道可计费的行数(在本例中为第2列)。换句话说,第2列中有多少行有文字“y”?无论如何,这是我到目前为止所尝试的:

的jQuery

var billable = 0;

// attempt 1
table.rows().eq(1)( function () {
    if(table.data() === 'y'){
       //priceTotal+=parseInt(table.cell(row,0).data());
        alert('This is the billable column, now count which equal "y".')
        billable++;
    }
});  

// attempt 2
column(2).data() === "y"){
    alert('This is the billable column, now count which equal "y".')
    billable++;
}

http://jsfiddle.net/s827x/3/

3 个答案:

答案 0 :(得分:2)

使用jquery我们可以通过父元素中的索引选择元素::nth-child(),所以简单地说:

$( ".our-table td:nth-child(2):contains('y')" ).length;

刚刚添加到HTML(以防万一):

<tbody class="our-table">

并使用:contains()选择器,我们选择第2列中的所有<td>:contains('y')

演示:http://jsfiddle.net/s827x/6/

答案 1 :(得分:1)

使用dataTables API循环遍历所有行:

var rowCount = table.rows()[0].length;
for (var row=0;row<rowCount;row++) {
    if (table.cells(row, 1).data().indexOf('y')>-1) {
        billable++;
    }
}
alert(billable+' total');
分叉小提琴 - &gt;的 http://jsfiddle.net/3C9Rk/

注意:Cells是zerobased,行数可以多种方式找到,上面只是一个API示例。

答案 2 :(得分:0)

isherwood的示例适用于完全匹配,但如果您仅查找包含搜索字词的匹配项,这也会有效:

function countContaining(table, search) {
  var count = 0;
  $(table).find('td').each(function(e) {
    if (e.innerHTML.indexOf(search) > 0) {
      count++;
    }
  });
  return count;
}