2012-11-15 116 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我爲此(不太可能)風險做了第三個版本。我敢肯定它可能會縮短一點,但它可能不值得痛苦... –