Ver Mensaje Individual
  #5 (permalink)  
Antiguo 03/02/2007, 09:33
Avatar de locojars
locojars
 
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 22 años
Puntos: 4
Re: Recuperar la posición absoluta de un div.

Hola nicolas, Gracias por tu ayuda. he separado el codigo js en otro archivo y lo adjunto:

Código:
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;

}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}



function HideContent(d) {
if(d.length < 1) { return; }
document.getElementById(d).style.visibility='hidden';
}
function ShowContent(d,id) {
	if(d.length < 1) { return; }
	else
		{
		document.getElementById(d).style.visibility='visible';
		document.getElementById(d).style.position='absolute';
               // aqui deberia de tomar la posicion del div que se oculta
		var elemento = document.getElementById(id);
		var pos = findPosX(elemento);
		var posy = findPosY(elemento);
		var posiciony = posy;
		var posicion = pos;
		document.getElementById(d).style.left = posicion;
		document.getElementById(d).style.top = posiciony;
		alert(elemento.offsetTop);

		}
}

// id=El div que ocultara, d=El div que mostrara
function validar_lista(id,d,foco,listado)
{
    var selObj = document.getElementById(listado);    
    var selIndex = selObj.selectedIndex;
    if(selObj.options[selIndex].value =="Another")
	{
  	  HideContent(id);
	  ShowContent(d,id);
	  objeto = document.getElementById(foco); 
	  objeto.focus();
	  return;
	} 
}
Aqui esta el HTML:
Código:
<table width="750" align="center" border="1" style="border-left:1px solid #000000;border-bottom:1px solid #000000;border-right:1px solid #000000">	
	<tr>
		<td width="300"><b>Clasificacion del cliente(Cuentas)</b></td>
		<td>&nbsp;
			<div id="clas" style="posiction:absolute;visibility:visible">
			<select id="clasificacion" name="clasi" size="1" onChange="validar_lista('clas','lista_clasi','another_clasi','clasificacion')">
           </select>
           </div>
   			<div id="lista_clasi" style="position:absolute;visibility:hidden">
   			<form name="f1" method="GET">
   			<input type="hidden" name="tipo" value="cclasificacion_eng">
			<input type="text" id="another_clasi" name="another_clasi" size="25">
			<input type="button" value="Add" onClick="procesar_form(this.form,'clasificacion','lista_clasi','clasifica')" name="boton">
			</form>
			</div>        	
		</td>
	</tr>
	<tr>
		<td width="300"><b>Tipo de industria(Cuentas)</b></td>
		<td>&nbsp;
		    <div id="TipoIndustria" style="posiction:absolute;visibility:visible">
			<select id="tindustria" name="tindustria" size="1" onChange="validar_lista('TipoIndustria','lista_tindustria','another_tindustria','tindustria')">
           </select>
           </div>
   			<div id="lista_tindustria" style="position:absolute;visibility:hidden">
   			<form name="f2" method="GET">
   			<input type="hidden" name="tipo" value="tindustria_eng">
			<input type="text" id="another_tindustria" name="another_tindustria" size="25">
			<input type="button" value="Add" onClick="procesar_form1(this.form,'tindustria','lista_tindustria')">
			</form>
			</div>        	
		</td>
	</tr>
</table>
Las funciones findPosX finPosY me da un valor distinto que el utilizar elemento.offsetTop.

El valor me da el mismo para ambas divs.

Gracias por tu ayuda y atencion.