Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/07/2008, 15:38
Avatar de buzu
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