Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/07/2007, 17:31
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Re: Como saber el numero de la fila?

¿Ineficiente? Tampoco es para tanto ¿no? Bueno, si es una tabla interminable podrías recorrerla al principio poco a poco (controlando con setInterval) e ir asignando a cada celda un atributo donde guardes el número de fila. Así será mas "eficiente" (no, pero será más relajado).

No se me ocurre ninguna manera de saber el número de fila sin utilizar un bucle para saber el nodo en el que nos encontramos.

He intentado una cosa que se basa en encontrar el contenido de la celda en el innerHTML de la tabla. Entonces coger el segmento de código antes de la celda, y contar el número de tr que aparecen. El problema es que si hay dos celdas con el mismo contenido, hay que hacer más comprobaciones (se puede hacer...):

Código PHP:
<table border="1">
    <
tbody>
        <
tr>
            <
td onclick="alert( queFilaSoy(this) );">lorem</td>
            <
td onclick="alert( queFilaSoy(this) );">ipsum</td>
            <
td onclick="alert( queFilaSoy(this) );">dolor</td>
            <
td onclick="alert( queFilaSoy(this) );">sit</td>
        </
tr>
        <
tr>
            <
td onclick="alert( queFilaSoy(this) );">amet</td>
            <
td onclick="alert( queFilaSoy(this) );">consteteur</td>
            <
td onclick="alert( queFilaSoy(this) );">hola</td>
            <
td onclick="alert( queFilaSoy(this) );">que</td>
        </
tr>
        <
tr>
            <
td onclick="alert( queFilaSoy(this) );">tal</td>
            <
td onclick="alert( queFilaSoy(this) );">mañana</td>
            <
td onclick="alert( queFilaSoy(this) );">como</td>
            <
td onclick="alert( queFilaSoy(this) );">muy</td>
        </
tr>
        <
tr>
            <
td onclick="alert( queFilaSoy(this) );">pronto</td>
            <
td onclick="alert( queFilaSoy(this) );">el</td>
            <
td onclick="alert( queFilaSoy(this) );">cardillo</td>
            <
td onclick="alert( queFilaSoy(this) );">que</td>
        </
tr>
    </
tbody>
</
table>





<
script type="text/javascript">


function 
queFilaSoycelda ) {
    
// innerHTML de la tabla
    
tablaInnerHTML celda.parentNode.parentNode.innerHTML
    
// parte de innerHTML de la tabla antes de nuestra celda
    
antesInnerHTML tablaInnerHTML.substring(0tablaInnerHTML.indexOf(">"+celda.innerHTML+"</"));
    
// partimos ese string por <tr>, así tendremos la cantidad de partes (cantidad de "<tr>" que hay) 
    
soyFila antesInnerHTML.split(/<tr>/i).length;
    
// devolvemos soyFila menos una unidad porque queremos que la primera fila sea 0
    
return soyFila-1;
}

</script> 

Como ves funciona, pero si se repite el contenido (como en la última celda) habría que buscar más inteligentemente . Y eso nos llevaría más código y más complejidad... De rendimiento con una tabla de 10000 filas no sé cómo andaría, pero yo no se si te merece la pena.


¿De qué problema hablamos?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.