Foros del Web » Programando para Internet » Javascript »

creando elementos con DOM

Estas en el tema de creando elementos con DOM en el foro de Javascript en Foros del Web. Tengo un problema al crear elementos con DOM. Tengo un js para validar un formulario, y quiero en lugar de mandar un alert cuando algo ...
  #1 (permalink)  
Antiguo 15/09/2006, 12:54
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
creando elementos con DOM

Tengo un problema al crear elementos con DOM.

Tengo un js para validar un formulario, y quiero en lugar de mandar un alert cuando algo falla, escribir el error sobre una celda.

Esta celda tiene un id="muestraError"

Cuando yo estoy haciendo mi validacion y detecto un error hago lo siguiente:

Código HTML:
msg = document.createTextNode("Dejaste un campo vacio que es necesario");
document.getElementById('muestraError').appendChild(msg); 
forma.elements[i].style.border = "#FF0000 1px solid";
forma.elements[i].focus();
return false;
Resulta que el borde del elemento si cambia el color pero el texto nunca aparece. Igual resulta que tampoco soy muy bueno en utilizar los elementos del DOM, por eso es la pregunta.

Saludos!
  #2 (permalink)  
Antiguo 15/09/2006, 13:33
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
Esa es la forma correcta de crear un nodo de texto, no tendría por qué no funcionarte. ¿Te fijaste si el valor de ID es el correcto?.

Tutorial de DOM (en castellano)
  #3 (permalink)  
Antiguo 15/09/2006, 13:41
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
gracias!

Si, lo he revisado y vuelto revisar pensando en lo mismo, que quizá el id de la celda no se llamara como lo estaba referenciando, pero si, esta escrito de la misma manera, incluso he copiado y pegado.

En fin, gracias por quitarme la duda de si era la manera correcta, veré que más puede ser.

Saludos!
  #4 (permalink)  
Antiguo 15/09/2006, 13:43
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Lo he probado y funciona correctamente
  #5 (permalink)  
Antiguo 15/09/2006, 13:47
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
será que de alguna manera tengo mal configurado mi navegador. Pero me dá mayor confianza para investigar el porque no veo los cambios si está bien declarado.

Saludos!
  #6 (permalink)  
Antiguo 15/09/2006, 13:57
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Parece que el código está bien, pero no sabemos de donde sale forma y "i"...
De todos modos, en vez de crear nuevos elementos, ¿Por qué no dejas una capa invisible, y en la validación la muestras... Una segunda validación mala crearía otro elemento y así sucesivamente... de la forma que te planteo solo debes mostrar/ocultar...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 15/09/2006, 14:37
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
Tiene razón lo que menciona caricatos, a medida que no pase la validación el mensaje de error se irá duplicando. Una opción es la que te señala caricatos, mantener el mensaje de error oculto, si no pasa la validación hacer visible ese mensaje.

Otra opción sería similar a la que estás utilizando, pero en vez de crear el mensaje de error como nodo de texto lo creas como un string, y lo insertas en la celda mediante la propiedad innerHTML. De esa manera el mensaje en dicha celda no se iría duplicando, sino que se iría reemplazando cada vez que se comete un error:

Código:
document.getElementById('elID').innerHTML = 'Mensaje de error';
  #8 (permalink)  
Antiguo 18/09/2006, 17:42
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
Ciertamente, jejeje, que bueno que no me salía, lo andaba haciendo mal. Ahora trataré de hacerlo bajo esa otra perspectiva.

Muchas gracias a todos!!
Saludos!
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 03:36.