Foros del Web » Programando para Internet » Javascript »

al hacer un innerHTML en firefox me borra el valor de un input en el mismo div

Estas en el tema de al hacer un innerHTML en firefox me borra el valor de un input en el mismo div en el foro de Javascript en Foros del Web. tengo el siguiente código: Código: <script language="javascript" type="text/javascript"> function agrega(){ var div = document.getElementById('capa'); div.innerHTML += 'prueba'; } </script> y en el body: Código: <div ...
  #1 (permalink)  
Antiguo 09/02/2010, 13:31
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
al hacer un innerHTML en firefox me borra el valor de un input en el mismo div

tengo el siguiente código:

Código:
<script language="javascript" type="text/javascript">
			
	function agrega(){
		var div = document.getElementById('capa');
		div.innerHTML += 'prueba';
	}
</script>

y en el body:

Código:
<div id="capa">
      <input name="b">
</div>
<a href="javascript:agrega();">Agrega</a>

Utilizando Firefox, si escribo algo en el campo "b" y luego hago clic en agregar, limpia lo que estaba escrito en el campo.

y necesito solucionarlo de una forma que no sea guardando el valor del campo y volviéndolo a agregar luego porque tengo que aplicarlo en un código que tiene campos dinámicos

si alguien tiene idea de como es esto le agradezco.
  #2 (permalink)  
Antiguo 09/02/2010, 13:37
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: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

eso es normal con innerHTML ya que este lee el codigo fuente. de modo que lo que se escribe en el campo no es parte del codigo fuente original. deberias usar funciones DOM como createElement y appendChild.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 09/02/2010, 13:52
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

a ok, pensé que el innerHTML simplemente agregaba al final de lo que estuviera pero no sabía que leía lo que estuviera en el código original, como funcionaba correctamente en IE, jejeej, bueno probé esto y me funcionó bien ahora veré de integrar ese código en el que tengo, pero creo que va todo bien si,

bueno gracias por la ayuda
  #4 (permalink)  
Antiguo 09/02/2010, 13:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

mmm, el tema es que lo que agrega dinámicamente no es un campo solo sino es un trozo de código html, una tabla con varios campos, supongo que la única manera será ir haciéndolo por partes, ¿o hay alguna forma de introducir todo ese html de una?
  #5 (permalink)  
Antiguo 09/02/2010, 14:01
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: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

pues la verdad que hacerlo por parte es tedioso si tienes multiples elementos distintos. lo que se me ocurre es crear un elemento temporeramente. luego, el nuevo contenido lo agregas a ese elemento con innerHTML. finalmente, agarras todos los nodos de ese elemento y lo agregas en el lugar correcto de tu documento con appendChild.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 09/02/2010, 14:30
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

pa, veo que me complica bastante de las dos formas, debería haber algo como el createElement pero que permita ingresar paquetes de código html ya armados previamente...
  #7 (permalink)  
Antiguo 09/02/2010, 14:35
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

en IE el innerHTML detecta lo que se escribe en los campos
  #8 (permalink)  
Antiguo 09/02/2010, 14:41
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

Nah, amigo zerokilled, te lo complicas mucho. Solo guarda el valor de 'b' en una variable, usa tu innerHTML normalmente y luego le pones a b el valor que tenía.

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2.            
  3.     function agrega(){
  4.         var div = document.getElementById('capa');
  5.                 var  inpt = document.getElementsByName('b')[0];
  6.                 var bVal = b.value;
  7.         div.innerHTML += 'prueba';
  8.                 inpt.value = bVal;
  9.     }
  10. </script>

Para empezar yo probaría con eso...
__________________
twitter: @imbuzu
  #9 (permalink)  
Antiguo 09/02/2010, 14:47
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

al final encontré algo que me lo soluciona, no se como funciona pero hace lo que deseo pero claro que solo para firefox, solo me queda preguntar que navegador es y hago esto o innerHTML
.........

Código:
var para = document.getElementById("capa");
var s = "<span>HOLA</span>";
var range = document.createRange();
range.selectNode(document.body);
var documentFragment = range.createContextualFragment(s);
para.appendChild(documentFragment);
  #10 (permalink)  
Antiguo 09/02/2010, 14:52
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

amigo buzu, el tema es que no me puedo referir al campo con el nombre porque es un campo dinámico y por el id tampoco, tendría que estar todo dentro de un bucle y es complicarla demasiado, quería algo que funcionara como el innerHTML en IE pero para firefox y con eso que encontré se soluciona, no se si es lo mejor pero es corto, porque no es que no me quiera complicar sino que el código es bastante complicado ya porque es todo dinámico.

Gracias a ambos por la ayuda por ahí la fui encontrando
  #11 (permalink)  
Antiguo 09/02/2010, 15:00
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: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

@buzu,
para un caso tan simple, pues tienes razon. pero esta fijado especificamente para la estructura de ese documento. yo lo visualizaba mas para cualquier tipo de contenido y estructura. por ejemplo,
Código:
function addContent(content, element){
var div = document.createElement("div");
div.innerHTML = content;
while(div.firstChild)element.appendChild(div.firstChild);
}
@seedwallgon,
no tengo idea del codigo que has mostrado porque hasta la fecha de hoy no me he interesado en las funciones Range pero creo (no estoy seguro) que en iexplorer tiene otras funciones similares.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #12 (permalink)  
Antiguo 09/02/2010, 15:07
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

Para IE el innerHTML me funciona bien, porque registra hasta lo que escribas en los campos...
  #13 (permalink)  
Antiguo 09/02/2010, 16:59
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: al hacer un innerHTML en firefox me borra el valor de un input en el mismo

zerokilled, eso es cierto, es para este caso concreto.

Aun con un campo dinámico se puede hacer, todo es cuestión de ver como se agrega y todo. De cualquier modo, si ya lo solucionaste, creo que aquí no hay más que hacer... jeje

Saludos.
__________________
twitter: @imbuzu

Etiquetas: firefox, innerhtml, input
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 23:37.