Foros del Web » Programando para Internet » Javascript »

Duda js

Estas en el tema de Duda js en el foro de Javascript en Foros del Web. Buenas tardes a todos. Tengo una duda y creo que cualquiera que sepa algo de js podrá solucionarla. Una parte del código de mi página ...
  #1 (permalink)  
Antiguo 29/03/2013, 09:38
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta Duda js

Buenas tardes a todos. Tengo una duda y creo que cualquiera que sepa algo de js podrá solucionarla.

Una parte del código de mi página consiste en crear una tabla de imágenes (código debajo), y me gustaría añadir un botón debajo de la tabla, como nuevo elemento dentro de mi DOM, y no como parte
del elemento "table". ¿Alguien podría indicarme como debería usar los métodos appendChild, y parentNode para esto, o bien si existe una manera más sencilla de hacerlo?.

Muchas gracias, un saludo.

Código Javascript:
Ver original
  1. var tabla = '<table id="myTable" align="center" frame="box" border="2" width="80" "height="80"" style=background-image:url("puzzle.jpg") >';
  2. tabla += '<TR><TD><IMG width="100" height="100" src='+img_array[0]+' id="img0" onClick="Mover('+"'img0'"+',0)"></TD><TD><IMG width="100"  height="100" src='+img_array[1]+' id="img1" onClick="Mover('+"'img1'"+',1)"></TD><TD><IMG width="100" height="100" src='+img_array[2]+' id="img2" onClick="Mover('+"'img2'"+',2)"></TD><TD><IMG width="100" height="100" src='+img_array[3]+' id="img3" onClick="Mover('+"'img3'"+',3)"></TD></TR>';
  #2 (permalink)  
Antiguo 29/03/2013, 09:45
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Duda js

buenas...
una vez agregado la tabla al documento, utilizas la misma referencia del elemento donde hayas agregado la tabla para agregar el botón. digamos que container es la referencia donde quieres agregar la tabla, y boton es el elemento a agregar luego de la tabla. entonces,
Código:
container.innerHTML = tabla;
container.appendChild(boton);
ya que tu tabla es un string, debes velar de crear correctamente el html. por ejemplo, te falta el cierre de la tabla </table>.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 30/03/2013, 12:21
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Duda js

Gracias por responder. He probado lo que dices pero el botón se me crea dentro del elemento tabla, y me gustaría tenerlo fuera. Dejo el código para ver si le puedes echar un vistazo.

Código Javascript:
Ver original
  1. var tabla= document.getElementById("Form").innerHTML=tabla;
  2.    
  3.  
  4.  
  5.     tab = document.getElementById("myTable");
  6.     contenedor = document.createElement('div');
  7.     contenedor.id = 'boton';
  8.     tab.appendChild(contenedor);
  9.    
  10.    
  11.     boton = document.createElement('input');
  12.     boton.type = "button";
  13.     boton.value = "comprobar";
  14.     boton.align = "center";
  15.     boton.onclick = function() {Terminado()}
  16.  
  17.     contenedor.appendChild(boton);
  #4 (permalink)  
Antiguo 30/03/2013, 21:11
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Duda js

menos mal no publiqué el código porque de alguna forma terminé haciendo otra cosa completamente distinta; editar el contenido de un elemento con un textarea. en todo caso, es muy difícil probar tu código si no muestras algo más completo. quizas, si incluyes imagenes podría servir como apoyo a tu consulta.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 31/03/2013, 05:20
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Duda js

La siguiente imagen es el puzzle. Como puedes observar debajo está el botón "comprobar", pero me gustaría tenerlo debajo de la tabla y no dentro de ella. ¿Cómo puedo hacer esto?.

Saludos y gracias.





  #6 (permalink)  
Antiguo 31/03/2013, 16:33
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Duda js

en realidad no está dentro de la tabla per se, más bien queda dentro de la interfaz del puzzle. si quieres poner el botón fuera de esa interfaz, tienes que subir un nivel en el DOM antes de agregar el botón. es decir, agregas el botón en el elemento padre (container.parentNode) del contenedor de la tabla. si no te funciona el elemento padre, intenta en el elemento hermano del contenedor de la tabla (container.parentNode.nextSibling). que conste que estoy adivinando, porque el lugar correcto dependerá de la estructura de tu documento.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 31/03/2013, 19:08
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Duda js

Veo por ahi que tu tabla es una variable con la cual hacés innerHTML al contenedor, en ese caso, debería ser asi

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Html5</title>
  5.  
  6. <script type="text/javascript">
  7. //<![CDATA[
  8.  
  9. var tabla = "<table border='1'><tr><td>A</td></tr><tr><td>B</td></tr></table>";
  10. window.onload = function(){
  11. var contenedor = document.getElementById('contenedor');
  12. contenedor.innerHTML = tabla;
  13.   boton = document.createElement('input');
  14.    boton.type = "button";
  15.    boton.value = "comprobar";
  16.    boton.align = "center";
  17.    boton.onclick = function() {Terminado()}
  18.    contenedor.appendChild(boton);
  19. }
  20.  
  21. //]]>
  22. </head>
  23. <div id="contenedor">
  24. </div>
  25. </body>
  26. </html>

El contenedor, también deberías crearlo ó no? hay un elemento de id Form que me despista un poco.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 03/04/2013, 12:36
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Duda js

Perfecto zerokilled, modificando esta línea el botón aparece fuera de la tabla. Ahora me hago mejor una idea del árbol DOM.

Código HTML:
Ver original
  1. tab.parentNode.appendChild(contenedor);


Emprear, muchas gracias por el aporte, pero de momento estoy con HTML4 + javascript. En unas pocas semanas comenzaré a preguntar cosas de HTML5
  #9 (permalink)  
Antiguo 03/04/2013, 12:55
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Duda js

Cita:
Iniciado por abarrero90 Ver Mensaje
Perfecto zerokilled, modificando esta línea el botón aparece fuera de la tabla. Ahora me hago mejor una idea del árbol DOM.

Código HTML:
Ver original
  1. tab.parentNode.appendChild(contenedor);


Emprear, muchas gracias por el aporte, pero de momento estoy con HTML4 + javascript. En unas pocas semanas comenzaré a preguntar cosas de HTML5
lo que puse de html5 solo tiene el Doctype, en html 4 ó xhtml sería lo mismo

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 03/04/2013, 13:36
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Duda js

Ahora estoy intentando añadir otro elemento, pero en este caso es una tabla. La consola web del navegador me da un error de indexado de la imagen, cito:

NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument arg 0 [nsIDOMHTMLDivElement.appendChild] @ file:puzzle.html:69

Este es el código que estoy usando. Es basicamente igual que el del botón, pero parece ser que hay algún problema con el elemento tabla. A ver si encontráis vosotros el error!!.

Código Javascript:
Ver original
  1. tab = document.getElementById("myTable");
  2.             contenedor = document.createElement('div');
  3.             contenedor.id = "tabla_tiempos";
  4.             tab.parentNode.appendChild(contenedor);
  5.  
  6.             //TablaTiempos = document.createElement('table');
  7.             var texto=document.createTextNode("Hello World");
  8.             texto.align = 'left';
  9.            
  10.             var TablaTiempos = '<table id="TablaTiempos" align="left" frame="box" border="2" width="80" "height="80"" >';
  11.            
  12.             TablaTiempos += '<TR><TD><"ola"></TD><TD><"adios"></TD><TD><"que tal"></TD><TD></TD></TR>';
  13.  
  14.             contenedor.appendChild(TablaTiempos);

Muchas gracias!!!.
  #11 (permalink)  
Antiguo 03/04/2013, 14:02
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Duda js

Por que TablaTiempos no es un elemento, es una cadena, deberías
Código HTML:
Ver original
  1. contenedor.innerHTML = TablaTiempos;
ó crear un elemento TablaTiempos, agregarle las filas, celdas y depues hacerle un appenChild al contenedor, en mi ejemplo anterior equivaldría a lo que hice con el boton
SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #12 (permalink)  
Antiguo 03/04/2013, 14:32
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Duda js

Conseguido, muchas gracias.

Etiquetas: js
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 19:20.