Foros del Web » Programando para Internet » Javascript »

¿Porque no me llena la tabla en las celdas que le digo??

Estas en el tema de ¿Porque no me llena la tabla en las celdas que le digo?? en el foro de Javascript en Foros del Web. A quien me pueda ayudar, no logro que ingrese los datos a cieras celdas; sino que me llena toda la tabla con lo mismo. @import ...
  #1 (permalink)  
Antiguo 25/03/2010, 13:59
 
Fecha de Ingreso: febrero-2008
Mensajes: 77
Antigüedad: 16 años, 2 meses
Puntos: 0
¿Porque no me llena la tabla en las celdas que le digo??

A quien me pueda ayudar, no logro que ingrese los datos a cieras celdas; sino que me llena toda la tabla con lo mismo.

Código Javascript:
Ver original
  1. <script>
  2. var data="<?php echo($junto_nombreposicion); ?>";
  3. var nombres=data.split(",");
  4. var cant=nombres.length;
  5.  
  6. var data2="<?php echo($junto_fil); ?>";
  7. var nombres2=data2.split(",");
  8. var cant2=nombres2.length;
  9.  
  10. var data3="<?php echo($junto_col); ?>";
  11. var nombres3=data3.split(",");
  12. var cant3=nombres3.length;
  13.  
  14. var nrofilas = document.getElementById("nrofilas").value;
  15. var nrocolumnas = document.getElementById("nrocolumnas").value;
  16. var fila = document.getElementById("fila").value;
  17. var columna = document.getElementById("columna").value;
  18. var nombreposicion = document.getElementById("nombreposicion").value;
  19.  
  20. for(var i=0; i<cant; ++i)
  21. {
  22. var posicion = ((nombres2[i] * nombres3[i])-1);
  23. nombre = nombres[i];
  24. alert(" posicion: "+posicion+" nombre: "+nombre);
  25. }
  26.  
  27.  
  28. function llenar(){
  29.         for (var b=0;b<nrocolumnas;b++){
  30.             document.write('<td border="1" width="45" height="45" background="#000000" style="cursor:pointer">&nbsp;</td>');
  31.         }
  32. }
  33.  
  34.  
  35. function crea_tabla(){
  36.     document.write("<table border='1'>");
  37.     for (var a=0;a<nrofilas;a++){
  38.         document.write('<tr>');
  39.         llenar();
  40.         document.write('</tr>');
  41.     }
  42.     document.write("</table>");
  43. }
  44.  
  45. </script>
Código HTML:
Ver original
  1. <script>crea_tabla();</script>
  2. </body>
  #2 (permalink)  
Antiguo 25/03/2010, 14:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: ¿Porque no me llena la tabla en las celdas que le digo??

¿Cuáles son los datos de las variables de PHP? Además ¿por qué no haces las tablas usando PHP?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 25/03/2010, 17:07
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: ¿Porque no me llena la tabla en las celdas que le digo??

Buenas,

ese código es un auténtico lío sobran muchas cosas y habría que rehacerlo desde cero.

- declaras un montón de variables que no usas para nada.
- en la línea 22 posicion vale NaN porque como es de suponer por el nombre de las variables no contendrán números. Pero además sólo usas la variable posicion en el alert.
- en la línea 30 a la hora de llenar los campos de la tabla sólo añades un espacio en blanco así que es eso lo que te muestra.
- sería conveniente separar en todo momento el php del html, del css y del javascript y sobre todo y hasta que funcione correctamente simplificarlo lo más posible, eso te facilitará mucho el trabajo y te ahorrará tiempo a la hora de encontrar errores.
- no es nada recomendable el uso y mucho menos el abuso de document.write, lo mejor sería que hicieras la tabla desde el lado del servidor y de hacerlo con javascript sería mejor creando los elementos createElement y añadiendolos al dom o incluso con innerHTML antes que con write.
- sería mejor hacer un bucle anidado en lugar de otra funcion o necesitarás parametros para llenar la tabla porque necesitas tener disponibles los valores de los dos contadores de los bucles para pasarlo como coordenadas de las celdas.

Un ejemplo muy sencillo basado en tu código sería algo así:

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <script>
  4.  
  5. var datas = [ ['aa', 'ab', 'ac'], ['ba', 'bb', 'bc'], ['ca', 'cb', 'cc'] ];
  6.  
  7. var nrofilas = 3;
  8. var nrocolumnas = 3;
  9.  
  10. function crea_tabla()
  11. {
  12.     document.write("<table border='1'>");
  13.     for (var a=0;a<nrofilas;a++){
  14.         document.write('<tr>');
  15.         for (var b=0;b<nrocolumnas;b++){
  16.             document.write('<td border="1" >' + datas[a][b] + '</td>');
  17.         }
  18.         document.write('</tr>');
  19.     }
  20.     document.write("</table>");
  21. }
  22.  
  23. </script>
  24. </head>
  25.  
  26. <body>
  27. <script>crea_tabla();</script>
  28. </body>
  29. </html>
  #4 (permalink)  
Antiguo 26/03/2010, 06:07
 
Fecha de Ingreso: febrero-2008
Mensajes: 77
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: ¿Porque no me llena la tabla en las celdas que le digo??

Tecna, gracias por tus copmentarios, pero hice esto, lo que me esta fallando ahora es que me muestra dos tablas distintas una con un valor (ya en la coordenada correcta) y la otra con otro valor (ya en la coordenada correcta), solo que en dos tablas, te adjunto pantallazo.

http://cid-6e98a0aa6195c695.skydrive...o/SAV/SAV2.png

for(var i=0; i<cant; ++i){
var posicion = ((nombres2[i] * nombres3[i])-1);
alert(posicion);
nombre = nombres[i];
}

function crea_tabla(){
document.write("<table border='1'>");
for (var a=0;a<nrofilas;a++){
document.write('<tr>');
/////////////////////////METO EL FOR AQUI Y ME APARECE LO QUE ESTA EN EL PANTALLAZO.
for (var b=0;b<nrocolumnas;b++){
if((a*nrocolumnas+b)==posicion){
document.write('<td border="1" width="45" height="45" background="#000000" style="cursor:pointer">'+nombre+'</td>');
}else{
document.write('<td border="1" width="45" height="45" background="#000000" style="cursor:pointer">&nbsp;</td>');
}
}
document.write('</tr>');
}
document.write("</table>");
}
  #5 (permalink)  
Antiguo 26/03/2010, 09:51
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: ¿Porque no me llena la tabla en las celdas que le digo??

Buenas,

el código que te puse funcionaba. El problema puede venir de los datos con los que estás probando. Te dije en el otro mensaje que revises el valor de la variable posicion porque si es NaN el if por ejemplo nunca se cumpliría y que puede ser NaN si estás intentando multiplicar dos cosas que no son números, como se puede suponer por el nombre que tienen las variables que usas de operandos (nombres2 y nombres3) si son números deberías cambiar el nombre a las variables y poner uno mas adecuado o por lo menos que no despiste. También es de suponer que sean cadenas porque el valor de esas variables lo has obtenido aplicando al resultado que te llega del php, que será una cadena, el método split que es un método para cadenas, aunque si las cadenas fueran cadenas de números si que funcionaría y devolvería un número. Pero aunque funcionara, posicion siempre tendría el mismo valor, el que tenga la última vez que se ejecute el bucle porque a cada iteración machacas el valor anterior. Como el alert está dentro del bucle si te mostrará todos los valores. Y lo mismo te pasaría con la variable nombre, con lo que siempre te escribirá el mismo nombre y en la misma posición. Lo de que te duplique la tabla será porque llames dos veces a la función y document.write sigue añadiendo contenido al documento, pero ya es mucho suponer. Cuanta más información facilites sobre el problema mas ayuda recibirás y si indentas y formateas el código también
  #6 (permalink)  
Antiguo 26/03/2010, 09:54
 
Fecha de Ingreso: febrero-2008
Mensajes: 77
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: ¿Porque no me llena la tabla en las celdas que le digo??

Estimado,
Reitero mis agardecimientos a tu persona, hare los cambios que me indicaste, pero para que sepas mas de mi proyeco, revisa esto:

http://www.forosdelweb.com/f13/mostr...sicion-790259/

Ya lo habia posteado antes, pero aun no recibo ayuda.
Gracias por lo que me puedas ayudar.
  #7 (permalink)  
Antiguo 26/03/2010, 11:15
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: ¿Porque no me llena la tabla en las celdas que le digo??

Buenas,

he visto 9 respuestas de la misma persona en distintos días interesandose por tu problema y dándote soluciones, no se como puedes decir que no has recibido ayuda, mas bien yo diría lo contrario que has recibido mucha para lo mal que explicaste el problema, la poca información que das y el poco caso que haces de lo que te dicen, los pantallazos no sirven de mucho, es mejor ver el código y además bien formateado, abrir varios hilos sobre el mismo tema o pedir la solucción con urgencia tampoco está bien visto, hay que ayudar a quien se ayuda y ayuda, pero revisa las respuestas que ahí esta la solución.
  #8 (permalink)  
Antiguo 26/03/2010, 12:18
 
Fecha de Ingreso: febrero-2008
Mensajes: 77
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: ¿Porque no me llena la tabla en las celdas que le digo??

Tecna,
Ya revise, la variable posicion no me da en ningun mometo NaN; lo que si aqui quede algo enredado con esto:

el que tenga la última vez que se ejecute el bucle porque a cada iteración machacas el valor

Efectivamente pongo un alert afuera de el primer for y solo me aparece el ultimo valor.

for(i=0; i<cant; ++i){
posicion = eval(((nombres2[i] * nombres3[i])-1));
nombre = nombres[i];
}

Etiquetas: celdas, 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 10:12.