2012-07-31 16 views
17

He buscado en Internet buscando una respuesta al respecto, pero no encuentro una solución. Quiero contar la cantidad de filas que tiene mi tabla HTML cuando se presiona un botón de enlace. alguien me puede ayudar por favor?Obtener el número de filas en una tabla HTML

Esto es lo que tengo hasta ahora:

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

Pero alguna razón se devuelve 0 a pesar de que tengo alrededor de 12 filas en mi mesa? Revisé mi nombre de identificación y es correcto.

Respuesta

47

Probar:

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

Tenga en cuenta que esto no dará el resultado esperado con tablas anidadas, es decir, tablas que contienen otras tablas. – Sjoerd

+0

¡Salud, amigo! :) –

5

El siguiente código asume que la tabla tiene el ID 'MiTabla'

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

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

respuesta tomado de: http://www.delphifaq.com/faq/f771.shtml, que es el primer resultado en Google para la consulta: "Obtener el número de filas en una tabla HTML";)

+0

Eso no es un navegador cruzado. –

+0

Para mi propio conocimiento personal, ¿qué no es un navegador cruzado en esta solución? –

+2

getElementsByTagName varía un poco de IE, FF y (Chrome, Webkit, Opera) IE7/8 tienen la costumbre de devolver 0 para su ejemplo. Firefox puede confundirse con espacios de nombres. En la versión posterior no es compatible con el mismo estilo de espacios de nombres. 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 (comentarios) Evitaría getElementsByTagName. –

0

Bueno, depende de lo que tenga en su mesa.

es uno de los siguientes Si usted tiene solamente una mesa

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

Si usted está preocupado acerca de las tablas sub pero esto no funcionará con tbody y la culata en T (si se utilizan)

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

Donde esto funcionará (pero es francamente exagerado)

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

El segundo selector no funcionará en absoluto. – BoltClock

3

In el DOM, un elemento tr es (implícita o explícitamente) un hijo de tbody, thead, o tfoot, no un hijo de table (de ahí el 0 que tiene). Entonces una respuesta general es:

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

Esto incluye las filas de la tabla pero excluye las filas de cualquier tabla interna.

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

nice to see solución no-jquery – bobbyrne01

+0

¿Hay alguna manera de subconjilar esto para las filas que cumplen una determinada condición? –

Cuestiones relacionadas