Buenas, voy avanzando en la programacion javascript. He conseguido cosas interesantes y ahora me gustaria poder ordenar tablas sin necesidad de acceder al servidor cada vez que desee ordenarlas.
Sigo el metodo bubble sort ya que es facil de implementar pero aun asi no consigo hacerlo funcionar.
Columna = entero que representa la columna que quiero ordenar (0=1a columna,1=2a columna,...).
Tabla = Tabla que quiero ordenar.
Código PHP:
function ordenar(columna,tabla) {
nMax=tabla.getElementsByTagName('tr').length;
alert("empiezo a ordenar, numero de filas: "+nMax);
i=1;
for(i=1;i<nMax;i++) {
for(j=0;j<nMax-1;j++) {
alert("i: "+i+"j: "+j);
if(tabla.getElementsByTagName('tr')[j].getElementsByTagName('input')){
alert("input type = "+tabla.getElementsByTagName('tr')[j].getElementsByTagName('input')[columna].type);
if(tabla.getElementsByTagName('tr')[j].getElementsByTagName('input')[columna].type=="text"){
alert(tabla.getElementsByTagName('tr')[j].getElementsByTagName('input')[columna].value);
alert(tabla.getElementsByTagName('tr')[j+1].getElementsByTagName('input')[columna].value);
if(tabla.getElementsByTagName('tr')[j].getElementsByTagName('input')[columna].value <
tabla.getElementsByTagName('tr')[j+1].getElementsByTagName('input')[columna].value) {
temp=tabla.getElementsByTagName('tr')[j].innerHTML;
alert(temp);
tabla.getElementsByTagName('tr')[j].innerHTML=tabla.getElementsByTagName('tr')[j+1].innerHTML;
tabla.getElementsByTagName('tr')[j+1].innerHTML=temp;
}
}
}
}
}
}
EDIT: La tabla es una tabla de inputs de tipo texto y checkbox. El algoritmo comprueba que el input sea de tipo texto
El codigo funciona bien hasta la hora de intercanviar el codigo, mi pregunta es si se puede hacer la siguiente instruccion:
tabla.getElementsByTagName('tr')[j].innerHTML=tabla.getElementsByTagName('tr')[j+1].innerHTML;
Ya que es donde me da el error.
Gracias como siempre!
PD: He buscado en el foro y he visto que hace un tiempo alguien dio el siguiente link
http://slayeroffice.com/code/tableSort.html pero es demasiado liado para mi...