2014-01-20 70 views
2

如何根據表列計算不同的錶行數?jQuery如何通過不同的列值對錶中的行數進行計數

例子:

<table> 
    <thead> 
     <tr> 
     <th>NAME</th> 
     <th>TECHNOLOGY</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>john</td> 
     <td>jQuery</td> 
    </tr> 
    <tr> 
     <td>mark</td> 
     <td>css</td> 
    </tr> 
    <tr> 
     <td>blah</td> 
     <td>css</td> 
    </tr> 
    <tr> 
     <td>abc</td> 
     <td>css</td> 
    </tr> 
    <tr> 
     <td>xyz</td> 
     <td>jQuery</td> 
    </tr> 
    </tbody> 
</table> 

我想出來的說:

css : 3 
jQuery : 2 

在這裏,我不知道是什麼技術來在該單元格,但是,我需要得到由無行技術

在此先感謝

+0

退房這個問題:http://stackoverflow.com/questions/15411966/count-td-不同表的數量與同類 我認爲它可以幫助你:) – Victor

回答

5
var byTechnology = {}; 

$("table tbody td:nth-child(2)").each(function() { 
    var tech = $.trim($(this).text()); 

    if (!(byTechnology.hasOwnProperty(tech))) { 
     byTechnology[tech] = 0; 
    } 

    byTechnology[tech]++; 
}); 

console.log(byTechnology); 
// { 
//  css: 3, 
//  jQuery: 2 
// } 
1

在負載下調用以下功能。勾選此的jsfiddle出來 - http://jsfiddle.net/pqzKa/2/

function count() 
{ 

var map = {}; 

$("tbody tr td:nth-child(2)").each(function(i, val){ 
       var key = $(val).text(); 
       if (key in map)     
        map[key]=map[key] + 1;          
       else 
        map[key] = 1;       
       }); 

var result=''; 
for(var key in map) 
{ 
result += key + ':' + map[key] + '\n'; 
} 
alert(result); 
} 

這個函數建立一個名爲地圖HashMap中。 然後它遍歷tbody中每個tr的第二個單元格,並檢查它是否存在於地圖中。如果沒有,它將它加到哈希映射中,計數爲1.如果是,它會將計數增加1. 我希望這有助於。

2

另一條路線可能是編寫一個更通用的函數來計算使用某些技術的人。

假設你使用jQuery和你的表都有一個id「高科技」你可以做這樣的事情

counter = function(textMatch){ 
    count=0; 
    //loop through all <tr> s 
    $('#tech').find('tbody tr').each(function(index) { 
     //if second <td> contains matching text update counter 
     if($($(this).find('td')[1]).text() == textMatch){ 
      count++ 
     } 
    }); 
    return count; 
} 

console.log('Number of people using CSS is ' + counter('css')); 
console.log('Number of people using CSS is ' + counter('jQuery')); 

//and so on 
相關問題