2011-12-03 18 views
7
<head> 
<script language="javascript"> 
// must have the onload handler 
onload = function countRows(){ 
    var rows = document.getElementById('myTableId').getElementsByTagName('tbody')[0].rows.length; 
    alert(rows); 
// outputs 3 
} 

</script> 
</head> 

<body> 
    <table id="myTableId"> 
     <tbody> 
      <tr><td></td><td><input onclick="doA_Function_That_Includes_CountRows()" /> 
      </td></tr> 
      <tr><td></td><td></td></tr> 
      <tr><td></td><td></td></tr> 
     </tbody> 
    </table> 
</body> 
</html> 
+0

masanın veya tbody satır sayısını saymak istiyor musunuz? – Thai

+0

Tbody'de. Tablonun saymak istemediğim tbody dışında bir başlık ve başka satırları var. – phpmeh

cevap

15

kullanarak DEĞİL tablodaki satır sayısını sayma Tablodaki satır sayısı.

sadece tablo vücutta yılında tabloda tüm satırları saymak olmayacağını unutmamak etmeyin. <thead> veya <tfoot> veya tbody dışında bir satır varsa, bu sayılmaz.

+0

HTML'de TBODY'den sonra işlev başlatılmadığı sürece çalışma görünmüyor. Üstbilgideki işleve çağrı yapamıyorum. Tbody'den sonra onu koymak zorundayım. – phpmeh

+1

Açıkçası. Herhangi bir JavaScript kodunda olduğu gibi, bir öğe tarayıcı tarafından henüz indirilmediyse, sayfada bulunmaz. Genel iyi bir uygulama olarak,

1

Dene:

var numberOfRows = document.getElementById('myTableId').getElementsByTagName('tbody')[0].getElementsByTagName('tr').length; 
+0

Denedim. 1 de geri dönüyordu. Fonksiyonun çağrıldığı önemli gibi görünüyor. – phpmeh

+1

@phpmeh: Oh, bir "yük" işleyicisi değil miydi? Tamam ... 'tbodies' için bir' yük 'işleyici :) – Ryan

9

diğer bir yolu, rows property [MDN] kullanarak:

var num = document.getElementById('myTableId').rows.length; 

sadece ilk tbody eleman satırları saymak isterseniz, (tBody property [docs])

ilk onu seçin
var num = document.getElementById('myTableId').tBodies[0].rows.length; 
+0

+1 koydu. Var olan hiçbir fikrim yoktu. – Ryan

+0

Bu şekilde çalışmaya başladım. Bana 1 veriyordu. Ben tbody sonra fonksiyona çağrıyı koyduğumda, çalışır. Maalesef, Tbody'nin başlangıcındaki işlevi çağırmam gerekiyor. – phpmeh

+0

@phpmeh: Bir DOM öğesi hakkında oluşturulduktan sonra yalnızca başvuruda bulunabilir veya bilgi alabilirsiniz. –

4

İşte bir çalışma uygulaması:

var table = document.getElementById("myTableId"); 
var tbody = table.tBodies[0]; 
alert(tbody.rows.length); 
Ve örnek bir jsFiddle: http://jsfiddle.net/9a6zK/

İlgili konular