Foros del Web » Programando para Internet » Javascript »

Colorear tablas

Estas en el tema de Colorear tablas en el foro de Javascript en Foros del Web. Tengo un problema que me gustaría resolver, solicito ayuda de los entendidos del foro. En el blog suelo poner bastantes tablas, ya que es sobre ...
  #1 (permalink)  
Antiguo 03/03/2010, 07:56
 
Fecha de Ingreso: febrero-2010
Ubicación: Bizkaia
Mensajes: 22
Antigüedad: 14 años, 2 meses
Puntos: 0
Colorear tablas

Tengo un problema que me gustaría resolver, solicito ayuda de los entendidos del foro.
En el blog suelo poner bastantes tablas, ya que es sobre una liguilla de fútbol, tipo cebra, antes lo hacía mediante clases y css y he encontrado estas funciones que me pintan las filas pares de un color e impares de otro.
Funciona perfectamente pero me gustaría pasarle a la función si va a comenzar por par o impar, algo como esto dentro del post al finalizar table, como lo hago ahora....

ColorFilas ('par'); o ColorFilas('impar');

Estas son las funciones..........


function ColorFilas () {
var tables = document.getElementsByTagName("table");
for (var i = 0; i < tables.length; i++) {
if (tables[i].className.match(/Cebra/)) {
TablaColor(tables[i]);}
}
}
function TablaColor (table) {
var current = "impar"; <---------------------- aquí lo cambiaría
var trs = table.getElementsByTagName("tr");
for (var i = 0; i < trs.length; i++) {
trs[i].className += " " + current;
current = current == "par" ? "impar" : "par";
}
}

Otra función que tengo es la siguiente, se encarga de poner color rojo a los números negativos que comienzan por -


function Negativo() {
TDs = document.getElementsByTagName('td');
for (var i=0; i<TDs.length; i++) {
var temp = TDs[i];
if (temp.firstChild.nodeValue.indexOf('-') == 0) temp.className = "negative";
}
}

Funciona perfectamente si el post está activo, si por ejemplo actualizo la pantalla y el post no es el primero no funciona.
La llamada a las funciones es la siguiente al finalizar table

<script language="JavaScript" type="text/javascript">
ColorFilas();
Negativo();
</script>

No se que estoy haciendo mal, si me ayudais os lo agradezco, gracias.
  #2 (permalink)  
Antiguo 03/03/2010, 10:00
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Colorear tablas

Nu entendi, a ver si esto es lo que queres..

Código Javascript:
Ver original
  1. function TablaColor (table, current) {
  2.     if(current==null)
  3.         var current = "impar";
  4.     var trs = table.getElementsByTagName("tr");
  5.     for (var i = 0; i < trs.length; i++) {
  6.         trs[i].className += " " + current;
  7.         current = current == "par" ? "impar" : "par";
  8.     }
  9. }

ejecutas
Código Javascript:
Ver original
  1. TablaColor(table, "par");
se iniciaria por "par"..

si no especificas el 2do campo, o sea.. si ejecutas lo siguiente
Código Javascript:
Ver original
  1. TablaColor(table);
automaticamente se iniciaria por "impar"

espero que sea lo que pedias

saludos
  #3 (permalink)  
Antiguo 03/03/2010, 16:20
 
Fecha de Ingreso: febrero-2010
Ubicación: Bizkaia
Mensajes: 22
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Colorear tablas

Cita:
Iniciado por Fernand0 Ver Mensaje
Nu entendi, a ver si esto es lo que queres..

Código Javascript:
Ver original
  1. function TablaColor (table, current) {
  2.     if(current==null)
  3.         var current = "impar";
  4.     var trs = table.getElementsByTagName("tr");
  5.     for (var i = 0; i < trs.length; i++) {
  6.         trs[i].className += " " + current;
  7.         current = current == "par" ? "impar" : "par";
  8.     }
  9. }

ejecutas
Código Javascript:
Ver original
  1. TablaColor(table, "par");
se iniciaria por "par"..

si no especificas el 2do campo, o sea.. si ejecutas lo siguiente
Código Javascript:
Ver original
  1. TablaColor(table);
automaticamente se iniciaria por "impar"

espero que sea lo que pedias

saludos
Gracias por interesarte Fernand() pero esto no es lo que quiero.
De hecho fue en lo primero que pensé, pero la llamada para pintar la tabla se realiza desde la otra función function ColorFilas () y esta a su vez llama a TablaColor().
Lo que quiero es poder pasar el parámetro a la función que pinta la tabla y que esta a su vez se lo pase a TablaColor() como tu has hecho, quizás no me he explicado correctamente, gracias.
  #4 (permalink)  
Antiguo 03/03/2010, 16:31
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Colorear tablas

Ahm.. es lo mismo..

Código Javascript:
Ver original
  1. function ColorFilas (current) {
  2.     var tables = document.getElementsByTagName("table");
  3.     for (var i = 0; i < tables.length; i++) {
  4.         if (tables[i].className.match(/Cebra/))
  5.             TablaColor(tables[i], current);
  6.     }
  7. }

Código Javascript:
Ver original
  1. function TablaColor (table, current) {
  2.     if(current==null)
  3.         current="impar";
  4.     var trs = table.getElementsByTagName("tr");
  5.     for (var i = 0; i < trs.length; i++) {
  6.         trs[i].className += " " + current;
  7.         current = current == "par" ? "impar" : "par";
  8.     }
  9. }

Código Javascript:
Ver original
  1. ColorFilas("par");

Última edición por Fernand0; 04/03/2010 a las 13:03
  #5 (permalink)  
Antiguo 03/03/2010, 17:54
 
Fecha de Ingreso: febrero-2010
Ubicación: Bizkaia
Mensajes: 22
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Colorear tablas

He intentado hacerlo funcionar con estas funciones y no rula, de hecho creo que hay un error en
if (tables[i].className.match(/Cebra/)) {
TablaColor(tables[i]);}, lo he corregido y sigue sin funcionar, lo he probado con ColorFilas("par"), ColorFilas('par'), ColorFilas() y la tabla se queda en blanco.
Pienso que quizás sea que al inicializar la variable current en las dos funciones en algún momento pierde el valor, no se que puede pasar, de todas formas te agradezco todas las molestias.
  #6 (permalink)  
Antiguo 04/03/2010, 13:03
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Colorear tablas

a ver si ahi anda, checkea mi post anterior que lo cambie al codigo

saludos
  #7 (permalink)  
Antiguo 05/03/2010, 05:27
 
Fecha de Ingreso: febrero-2010
Ubicación: Bizkaia
Mensajes: 22
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Colorear tablas

Cita:
Iniciado por Fernand0 Ver Mensaje
a ver si ahi anda, checkea mi post anterior que lo cambie al codigo

saludos
Muchas gracias Fernand0 por las funciones, pero no trabajan adecuadamente.
Creo que llega un momento que la función no identifica correctamente la clase y se hace la picha un lio, funciona bien si la tabla es única, pero yo coloco tablas cada semana con los resultados en distintos post de blogger y los resultados son inprevisibles, igual te pinta una bien y la otra en gris todas las filas.

Buscando he encontrado una función, la cual he modificado y me funciona de maravilla, el problema es que a cada tabla le tengo que poner un id diferente y es un coñazo.
Quisiera saber si hay algún metodo para pasarle una clase genérica y no un id único, he leido que en javascript no existe la función getElementsByClass aunque es fácil encontrarla, por otra parte se comenta que no trabaja bien con explorer.
Quizás no quede otro remedio que pasarle un id único, porque ahora mismo trabaja de cine, tanto si la tabla está en el post principal o actualizas la página, cosa que antes daba problemas, por si interesa a alguién la función y se puede mejorar la pongo aquí................... también he conseguido que me pinte las celdas negativas de rojo, un saludo y mirar a ver si me podeís ayudar...

FUNCIÓN

function ColorFilas(id,tipo) {
if (document.getElementsByTagName) {
var tablas = document.getElementById(id);
var filas = tablas.getElementsByTagName("tr");
var celdas = tablas.getElementsByTagName ("td");
for(i = 0; i < filas.length; i++) {
if (i % 2 == 0) {
filas[i].className = tipo == "par" ? "impar" : "par";}
else {
filas[i].className = tipo == "par" ? "par" : "impar";}}
for (j = 0; j < celdas.length; j++) {
var temp = celdas[j];
if (temp.firstChild.nodeValue.indexOf('-') == 0) temp.className = "negative";}
}
}

Las clases serían

tr.par{}
tr.impar{}
td.negative{}

y la llamada a la función dentro del post, depués de </table>

<script type="text/javascript">ColorFilas("ID único","par o impar")</script>

Etiquetas: colorear, tablas
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 11:17.