2

我有一个包含各种列和许多行的表。为了简化这一点,我只需要知道有多少行是可计费的(在本例中为第 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/

4

3 回答 3

2

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

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

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

<tbody class="our-table">

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

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

于 2014-08-04T20:35:21.103 回答
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');

分叉的小提琴-> http://jsfiddle.net/3C9Rk/

注意:Cells是从零开始的,行数可以通过多种方式找到,以上只是一个API示例。

于 2014-08-05T07:31:08.603 回答
0

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

function countContaining(table, search) {
  var count = 0;
  $(table).find('td').each(function(e) {
    if (e.innerHTML.indexOf(search) > 0) {
      count++;
    }
  });
  return count;
}
于 2014-08-04T20:15:16.620 回答