2012-07-31 42 views
17

我瀏覽過網上尋找這個答案,但我找不到解決方案。我想要統計按下鏈接按鈕時我的HTML表格的行數。有人可以幫我嗎?獲取HTML表格中的行數

這是我到目前爲止有:

$('#HypSelectAll').click(function() { 
    var count = $('#gvPerformanceResult').children().length; 
    for (i = 0; i < count; i++) { 
     alert(i); 
    } 
}); 

但由於某些原因,它返回0,即使我有我的表約12行?我檢查了我的ID名稱並且它是正確的。

回答

47

嘗試:

var count = $('#gvPerformanceResult tr').length; 
+2

請注意,這不會給出嵌套表的預期結果,即包含其他表的表。 – Sjoerd 2012-07-31 14:58:47

+0

乾杯隊友! :) – 2012-07-31 15:11:37

5

下面的代碼假定您的表有ID 'MyTable的' 取自

<script language="JavaScript"> 
<!-- 
var oRows = document.getElementById('MyTable').getElementsByTagName('tr'); 
var iRowCount = oRows.length; 

alert('Your table has ' + iRowCount + ' rows.'); 
//--> 
</script> 

答:http://www.delphifaq.com/faq/f771.shtml,這是谷歌的第一個結果對於查詢:「獲取HTML表中的行數」;)

+0

這不是跨瀏覽器。 – 2012-07-31 15:02:24

+0

對於我個人的知識,這個解決方案中什麼不是跨瀏覽器? – 2012-07-31 15:17:47

+2

getElementsByTagName與IE,FF和(Chrome,Webkit,Opera)有所不同 對於您的示例,IE7/8有習慣返回0。 Firefox可能會與名稱空間混淆。 在後面不支持相同風格的命名空間。 http://www.webdeveloper.com/forum/showthread.php?t=248215 http://webbugtrack.blogspot.co.uk/2007/09/bug-204-getelementsbytagname-doesnt.html http: //msdn.microsoft.com/en-us/library/ie/ms536439(v=vs.85).aspx(評論) 我會避免getElementsByTagName。 – 2012-07-31 16:04:38

0

這取決於你在桌子上有什麼。

及其以下 之一。如果你只有一臺

var count = $('#gvPerformanceResult tr').length; 

如果您擔心的子表,但與TBODY和THEAD(如果你使用它們)

var count = $('#gvPerformanceResult>tr').length; 
這不會工作

由此將工作(但是相當坦率地過度殺傷。)

var count = $('#gvPerformanceResult>tbody>tr').length; 
+0

第二個選擇器根本不起作用。 – BoltClock 2012-07-31 16:46:21

3

在DOM,tr元素是(隱含或顯式地)tbodytheadtfoot的孩子,而不是table(因此您得到的0)的孩子。所以一般的答案是:

var count = $('#gvPerformanceResult > * > tr').length; 

這包括表的行但排除任何內表的行。

41
var x = document.getElementById("myTable").rows.length; 
+10

很高興看到非jQuery解決方案 – bobbyrne01 2014-07-18 10:56:58

+0

有沒有辦法將這個子集合到符合某種條件的行? – 2017-07-24 20:25:41