Foros del Web » Programando para Internet » Javascript »

ajustar una tabla

Estas en el tema de ajustar una tabla en el foro de Javascript en Foros del Web. que tal, se como crear una tabla, sus filas y columnas desde cero, pero como puedo ajustar una tabla definida (siempre al cargar la tabla ...
  #1 (permalink)  
Antiguo 04/09/2007, 17:36
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
ajustar una tabla

que tal, se como crear una tabla, sus filas y columnas desde cero, pero como puedo ajustar una tabla definida (siempre al cargar la tabla se formara con un numero especifico de columnas) al momento de cargar? es decir, tengo una tabla con 5 columnas, el usuario puede crear una configuracion, osea que puede elegir que columnas quiere que sean visibles y cuales no,si el usuario solo necesita mostrar 3 columans de esa tabla, como podria eliminar u ocultar las columnas que no necesite? espero me puedan hechar una orientadita , gracias de antemano....

por cierto, la configuracion ya viene guardada prviamente en la BD, osea que despues de pintar la tabla completa extraigo que columnas el usuario definio que fueran visibles y es hay donde necesito modificar la tabla....oala puedan ayudarme...
__________________
Wow! No se que decir...

Última edición por zyon; 04/09/2007 a las 17:43
  #2 (permalink)  
Antiguo 05/09/2007, 02:37
 
Fecha de Ingreso: septiembre-2006
Mensajes: 59
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: ajustar una tabla

Hola..

Te paso un codigo para generar una tabla dinamicamente...

Es decir a partir del numero de filas y numero de columnas.. te crea una tabla con x posiciones...
Luego las rellenas como tu quieras..

Espero te sirva!
Yo en esta le puse eventos onclick porque hice el juego del conecta 4 o 4 en raya como quieras decirlo..
Pero igualmente le puedes poner textos imagenes etc...
Creo que aqui tambien estoy metiendo imagenes...

Saludos

function createTable(fila,columna,id)
{


var tb, tr, td, text;

bd = window.top.frames[1].document.getElementById(id);
tb = document.createElement("table");
tb.id="conecta";
tb.className ="centro";
//tb.border="1";
//tb.class="centro";

fila = fila++;

for ( x = 0; x < fila +1 ; x ++)
{

file = tb.insertRow(x);


for ( y = 0 ; y < columna ; y++)
{

//aqui ponemos un control para que solo la primera fila tenga envento onclick y onmouseover y onmouseout
if( x == 0 )
{
celda = file.insertCell(y);
celda.id = "f_" + x + "_c_" + y ;


txt = document.createElement("img");
txt.id = "i_" + x + "_c_" + y;
txt.src = "../img/blanco.bmp";


celda.setAttribute('onclick','javascript:return insertar(\''+ txt.id + '\')');
celda.setAttribute('onmouseover','javascript:retur n jugador(\''+ txt.id + '\')');
celda.setAttribute('onmouseout','javascript:return defecto(\''+ txt.id + '\')');

celda.appendChild(txt);
}
else
{

celda = file.insertCell(y);
celda.id = "f_" + x + "_c_" + y ;
txt = document.createElement("img");
txt.id = "i_" + x + "_c_" + y;
txt.src = "../img/bola_sinnada.bmp";

celda.appendChild(txt);

}//fin if

}//fin for



}//fin for

bd.appendChild(tb);





}//fin funcion
  #3 (permalink)  
Antiguo 05/09/2007, 07:53
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: ajustar una tabla

Gracias por responder pero io ya tengo algo similar para crear tablas, mas bien lo que necesito es poder eliminar celdas o columnas, encontre como eliminar una celda y es asi

Código HTML:
function eliminarCell(){
	var x=document.getElementById('f_0');
	x.deleteCell(4);
}
aplicandole un for podre eliminar una columna completa, espero con eso avanzar en lo que necesito y sino ya les hechare un gritito de nuevo jeje
__________________
Wow! No se que decir...

Última edición por zyon; 05/09/2007 a las 08:49
  #4 (permalink)  
Antiguo 05/09/2007, 09:03
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: ajustar una tabla

mm ahora me pregunto si es posible eliminar una celda en base al id y no a la posición, es posible?
__________________
Wow! No se que decir...
  #5 (permalink)  
Antiguo 05/09/2007, 18:32
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: ajustar una tabla

Supongo que es tan simple como ésto:

Código PHP:
<TABLE border="1">
    <
TBODY>
        <
TR>
            <
TD>.</TD>
            <
TD>.</TD>
            <
TD>.</TD>
        </
TR>
        <
TR>
            <
TD>.</TD>
            <
TD id="fuera"Me elimino </TD>
            <
TD>.</TD>
        </
TR>
        <
TR>
            <
TD>.</TD>
            <
TD>.</TD>
            <
TD>.</TD>
        </
TR>
    </
TBODY>
</
TABLE>

<
button onclick="f()"Eliminala </button>

<
script type="text/javascript">
<!--

function 
f() {
    var 
laCelda document.getElementById('fuera');
    
laCelda.parentNode.removeChild(laCelda);
}

// -->
</script> 
Habría que cuidar el aspecto de la tabla... poner la celda hermana con colspan="2" o algo por el estilo para que no quede así de vacío, pero en fin, es una idea.

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 06/09/2007, 06:04
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: ajustar una tabla

que tal derkenuke, gracias por responder, justamente ya habia encontrado eso ayer pero por hacer prubas ya no avise, aunque no comprendi del todo eso del aspecto de la tabla, me lo puedes explicar un poquito mejor :D gracias!
__________________
Wow! No se que decir...
  #7 (permalink)  
Antiguo 07/09/2007, 07:55
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: ajustar una tabla

¿Ves que en una fila queda como un espacio en blanco? ¿Algo que faltaría "por rellenar"? A eso me refiero. Falta un colspan ahí.


Te dejo un ejemplo que he sacado tras unos cuantos intentos de ensayo-error. Agrega colspan predeterminadamente a la celda de la izquierda, pero si no existe lo agrega a la de la derecha. Si la celda está sola en la fila elimina la fila entera:

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<
head>
<
meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
<
meta name="Author" content="derkeNuke" />
<
title>Página nueva</title>
<
style type="text/css">

</
style>
</
head>

<
body>


<
TABLE border="1">
    <
TBODY>
        <
TR>
            <
TD>.</TD>
            <
TD>.</TD>
            <
TD>.</TD>
        </
TR>
        <
TR>
            <
TD>.</TD>
            <
TD id="uno"soy uno </TD>
            <
TD>.</TD>
        </
TR>
        <
TR>
            <
TD id="dos"soy dos</TD>
            <
TD>.</TD>
            <
TD>.</TD>
        </
TR>
        <
TR>
            <
TD>.</TD>
            <
TD>.</TD>
            <
TD id="tres"soy tres </TD>
        </
TR>
        <
TR>
            <
TD id="cuatro" colspan="3"soy cuatro </TD>
        </
TR>
        <
TR>
            <
TD>.</TD>
            <
TD id="cinco"soy cinco</TD>
            <
TD id="seis"soy seis </TD>
        </
TR>
        <
TR>
            <
TD id="siete"soy siete </TD>
            <
TD id="ocho"soy ocho </TD>
            <
TD>.</TD>
        </
TR>
        <
TR>
            <
TD id="nueve"soy nueve </TD>
            <
TD id="diez"soy diez </TD>
            <
TD id="once" soy once </TD>
        </
TR>
        <
TR>
            <
TD rowspan="2" id="doce"soy doce </TD>
            <
TD>.</TD>
            <
TD>.</TD>
        </
TR>
        <
TR>
            <
TD>.</TD>
            <
TD>.</TD>
        </
TR>
    </
TBODY>
</
TABLE>

<
button onclick="f('uno')"Elimina 'uno' </button><br/>
<
button onclick="f('dos')"Elimina 'dos' </button><br/>
<
button onclick="f('tres')"Elimina 'tres' </button><br/>
<
button onclick="f('cuatro')"Elimina 'cuatro' </button><br/>
<
button onclick="f('cinco')"Elimina 'cinco' </button> <button onclick="f('seis')"Elimina 'seis' </button><br/>
<
button onclick="f('siete')"Elimina 'siete' </button> <button onclick="f('ocho')"Elimina 'ocho' </button><br/>
<
button onclick="f('nueve')"Elimina 'nueve' </button>
<
button onclick="f('diez')"Elimina 'diez' </button>
<
button onclick="f('once')"Elimina 'once' </button><br/><br/>
<
button onclick="f('doce')"Elimina 'doce' </button>

<
script type="text/javascript">
<!--

function 
f(idCelda) {
    var 
laCelda document.getElementById(idCelda);
    try {                
// Predeterminado: aumentar la anterior
        // Obtenemos la celda anterior, no el nodo de texto
        
var anterior laCelda.previousSibling;
        while( 
anterior.nodeType!=)
            
anterior anterior.previousSibling;
        
// aumentamos el colSpan
        
anterior.colSpan anterior.colSpan parseInt(anterior.colSpan)+"2";
        
// (manteniendo lo que ya teníamos acumulado)
        
if( laCelda.colSpan )
            
anterior.colSpan = (parseInt(anterior.colSpan) -1) + parseInt(laCelda.colSpan);
    } catch(
err) {        //No hay anterior, quizás hay siguiente
        
try {
            
// Obtenemos la celda siguiente, no el nodo de texto
            
var siguiente laCelda.nextSibling;
            while( 
siguiente.nodeType!=)
                
siguiente siguiente.nextSibling;
            
// aumentamos el colSpan
            
siguiente.colSpan siguiente.colSpan parseInt(siguiente.colSpan)+"2";
            
// (manteniendo lo que ya teníamos acumulado)
            
if( laCelda.colSpan )
                
siguiente.colSpan = (parseInt(siguiente.colSpan) -1) + parseInt(laCelda.colSpan);
        } catch(
err2) {        // No hay siguiente: No hay ni anterior ni siguiente, la celda está sola, eliminar la fila
            
var padre laCelda.parentNode;
            
padre.parentNode.removeChild(padre);
        }
    }
    
laCelda.parentNode.removeChild(laCelda);
}

// -->
</script> 



</body>
</html> 
Púlsa los botones en el orden que quieras: Siempre va a funcionar, es muy dinámico.


Falta soporte para el rowspan (doce): si la celda a eliminar contiene varias filas ya es más complicado, hay que abarcarlas a las dos. Tendríamos que identificarlas y hacer más aplicaciones de colspan... Si tiene rowspan y colspan a la vez no quiero ni pensarlo...



Bueno, espero que te guste y veas cómo podemos manejar tablas a nuestro antojo.


PD: No te abrumes por el script, entenderlo sin más es complicado porque lo he hecho sobre la marcha. Si quieres pon un par de alert() para saber los datos que tenemos y los datos que he cambiado, ha sido más fácil de lo que parece, pero es dificil saber lo que hace a primera vista.



Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:19.