Foros del Web » Programando para Internet » Javascript »

recuperar despues de innerHTML

Estas en el tema de recuperar despues de innerHTML en el foro de Javascript en Foros del Web. Buenas; He realizado un innerHTML, en un div (simulo el minimizado de una ventana de este div) como recupero ("maximizar") el contenido anterior del div? ...
  #1 (permalink)  
Antiguo 10/07/2008, 09:58
Avatar de desendoll  
Fecha de Ingreso: mayo-2008
Mensajes: 340
Antigüedad: 15 años, 11 meses
Puntos: 3
Pregunta recuperar despues de innerHTML

Buenas;

He realizado un innerHTML, en un div (simulo el minimizado de una ventana de este div) como recupero ("maximizar") el contenido anterior del div? he pensado en guardar el contenido anterior en una variable, pero no se si es lo mas recomendado.

Gràcias
  #2 (permalink)  
Antiguo 10/07/2008, 10:02
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: recuperar despues de innerHTML

No, no es lo mas recomendado, si lo que quieres es simular un minimizador deberías modificar el tamaño del div o elemento que quieras que simule el minimizador. Al rato regreso y si nadie mas me ha ganado te paso una función...
__________________
twitter: @imbuzu
  #3 (permalink)  
Antiguo 10/07/2008, 15:38
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: recuperar despues de innerHTML

eh que tal? acá regresando de la escuela. Te paso la función que utilice hace un tiempo en un sito web que desarrolle. Se requería que al hacer click en la imagen de un libro se expandiera un div con la info del libro.

Código:
//info library por Buzu

var info = {
	addEvent: function(elem, evType, func, useCapture){
		if(elem.addEventListener){
			elem.addEventListener(evType, func, useCapture);
			return true;
		}else if(elem.attachEvent){
			var r = elem.attachEvent('on' + evType, func);
			return r;
		}else{
			elem['on' + evType] = func;
		}
	},
	
	init: function(){
		var infodiv = document.getElementById('info_libro');
		var libro = document.getElementById('elLibro');
		info.altura = infodiv.offsetHeight;
		info.efecto();
		info.addEvent(libro, 'click', info.efecto, false);
	},
	
	efecto: function(){
		if(info.abierto == false){
			clearInterval(info.intervalo);
			info.muestra();
			info.abierto = true;
		}else if(info.abierto == true){
			clearInterval(info.intervalo);
			info.oculta();
			info.abierto = false;
		}
	},
	
	muestra: function(){
		var infodiv = document.getElementById('info_libro');
		infodiv.style.height = '0px';
		infodiv.style.overflow = 'hidden';
		info.intervalo = setInterval(function(){ info.redimenciona(info.altura); }, 1);
	},
	
	oculta: function(){
		var infodiv = document.getElementById('info_libro');
		infodiv.style.height = infodiv.offsetHeight + 'px';// establesco la altura por que js no la lee a menos que haya sido establecida antes.
		infodiv.style.overflow = 'hidden';
		info.intervalo = setInterval(function(){ info.redimenciona(0); }, 1);
	},
	
	redimenciona: function(limite){
		var infodiv = document.getElementById('info_libro');
		inicial = parseInt(infodiv.style.height);
		
		actual = Math.ceil((limite - inicial)/4);
		inicial += actual;
		infodiv.style.height = inicial + 'px';
		if(parseInt(infodiv.style.height) >= (limite - 5) && parseInt(infodiv.style.height) <= (limite + 5)){
			clearInterval(info.intervalo);
			infodiv.style.height = limite + 'px';
		}
	},
	
	abierto: true
}

info.addEvent(window, 'load', info.init, false);
Examinala y si no entiendes algo nomas pregúntame. Un par de datos utiles a la hora de examinar la funcion.
info_libro es el div a expandir.
elLibro es el enlace/botón que se presionaba para expandir u ocultar la info.
Creo que es todo lo que necesitas saber, lo demás es solo JS.
__________________
twitter: @imbuzu
  #4 (permalink)  
Antiguo 11/07/2008, 01:10
Avatar de desendoll  
Fecha de Ingreso: mayo-2008
Mensajes: 340
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: recuperar despues de innerHTML

Perfecto, en cuanto me pase la resaca lo pruebo

gràcias
  #5 (permalink)  
Antiguo 11/07/2008, 07:28
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: recuperar despues de innerHTML

OK. No olvides comentar que tal te funcionó...
__________________
twitter: @imbuzu
  #6 (permalink)  
Antiguo 14/07/2008, 04:05
Avatar de desendoll  
Fecha de Ingreso: mayo-2008
Mensajes: 340
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: recuperar despues de innerHTML

Me ha funcionado perfecto, haré algunos cambios para que se adapte correctamente pero era justo lo que buscaba;

Gracias.

----------------------------
http://www.desenweb.es ... si, aprovecho el comentario para recomendaros mi blog...
  #7 (permalink)  
Antiguo 10/03/2010, 08:03
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: recuperar despues de innerHTML

Hola buzu que tal, soy nuevo en el foro, y el codigo que publicas para ocultar los Div me funciona, con la diferencia que nunca se oculta de todo, me explico, se recoge el Div pero luego vuelve a mostrar el contenido, estoy trabajando con una tabla que recibe campos de una tabla Mysql, dime como hacer para que la tabla quede oculta del todo.

Gracias de antemano.!
  #8 (permalink)  
Antiguo 10/03/2010, 08:14
Avatar de desendoll  
Fecha de Ingreso: mayo-2008
Mensajes: 340
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: recuperar despues de innerHTML

buenas, te respondo yo si no te importa ;)

Seguramente tienes un padding o un margin que no debes. Es por culpa de tu css. Aunque de este filo ya hace dos años.

Ahora utilizo jquery y en una linea lo tienes solucionado.
__________________
Francesc Jimenez
  #9 (permalink)  
Antiguo 10/03/2010, 08:14
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: recuperar despues de innerHTML

Listo brother, era solo de cuestion de poner el Script luego del Div.
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 16:09.