2012-11-15 63 views
2

我有一个html表格,其中包含<td>元素(即<td>Mike (Jeremy's father) used to play piano</td><td>The only one who speaks french is Desmond, but Mike speaks very well spanish</td>)内的句子中的名称列表。我想要统计在整个表中出现特定名称的次数。我需要通过javascript/jquery来完成,而不是通过php。 任何帮助将appriciated!计算特定值出现在表中的次数

+1

如果文字是关于鲍勃先生,他在他的渔具收藏家的遗体中被发现在水中晃动? –

+0

@MarcB然后抹一个[''URIError'](http://ecma-international.org/ecma-262/5.1/#sec-15.11.6.6)。 –

回答

6

你可以使用

var nbMikeInTheTable = (' '+$('table').text()+' ').split('Mike').length-1; 

(增加'是对IE的马车实施拆分的兼容性)

或者,如果你想确定这是整个单词并且它不是由HTML

var nbMikeInTheTable = $('table').html().split(/\W+/).filter(
    function(v){return v=="Mike"} 
).length; 

如果要防范的话结束和细胞并结束切确保它不是一个td的属性的一部分,它是一个有点复杂:

var nbTimesMikeIsInTheTable = $('table td').map(function(){ 
    return $(this).text().split(/\W+/).filter(function(v){return v=="Mike"}).length 
}).toArray().reduce(function(p,v){return p+v}); 

这不是优雅,但很可能没有必要;)

Demonstration (open the console)

+0

如果一个单元以“Mi”结尾,下一个单元以“ke”开始会怎么样? –

+0

关于您的更新,这也会捕获属性名称/值中的出现次数。 (我在这里扮演魔鬼的拥护者:)') –

+0

@ŠimeVidas我为此(不太可能)风险做了第三个版本。我敢肯定它可能会缩短一点,但它可能不值得痛苦... –