Voy a acortar el mensaje anterior... ya que creo que el problema está en la forma de llamar a la función...
Hay alguna diferencia entre :
Código HTML:
<a href="javascript:paginas('index.php?ir=menu_buscar_perfiles&tipo=sencilla&accion=mostrar_index', 'capa_sms_1_completo',200)">Busqueda sencilla</a>
y entre:
Código HTML:
<script type="text/javascript">
paginas('index.php?ir=menu_buscar_perfiles&tipo=sencilla&accion=mostrar_index&provincia_select=ok&pais_id=8','capa_sms_1_completo',200);
</script>
que en la segunda url se añada &provincia_select=ok&pais_id=8 no es importante... Solo se usa para saber que el layer debe de añadir la provincia.
Entonces ¿La segunda llamada a la función le pasa algo?
La única diferencia en la funcionalidad, es que
en el primer método, la función paginas() se activa cuando se hace click, y
con el segundo método, después de pulsar el desplegable con todos los paises, se redirecciona a la nueva página html (gracias a onchange="document.forms.buskeda_sencilla.action=' index.php?ir=menu_buscar_perfiles&tipo=index&mostr ar_layer=sencilla&provincia_select=ok'; document.forms.buskeda_sencilla.submit()), donde se ejecuta automáticamente la función paginas().
Muchas Gracias (y dejo el mensaje anterior por si os puede aclarar algo...)
----------------------------------
Hola gente!
Estoy jugando un poco con capas para no tener que recargar tantas veces una web que estoy realizando, pero tengo un problemilla..
Estaba utilizando el firefox y no me daba ningún problema, pero se me ocurre probar con el internet explorer, y toma, me da error xD
El error es "Se requiere un objeto" en la linea 385 y se refiere al documento principal, pero.. en el documento html no existen mas de 150 lineas, así que me imagino que se referirá al ".js", que apunta justamente a la última linea... Así que no me aclara nada :S
Os cuento la función que quiero realizar, que es algo compleja xD
1- Desde una página se abren diferentes layers para realizar búsquedas.
Esta es la parte del código importante:
Código HTML:
<div id="capa_sms_1_completo" class="texto_12_negro_bold" align="center" style="z-index:1;top:300;left:280;height:100;width:440;position:absolute;visibility:hidden;"></div>
<div id="capa_sms_2_completo" class="texto_12_negro_bold" align="center" style="z-index:1;top:300;left:280;height:200;width:440;position:absolute;visibility:hidden;"></div>
<div id="capa_sms_3_completo" class="texto_12_negro_bold" align="center" style="z-index:1;top:300;left:280;height:70;width:440;position:absolute;visibility:hidden;"></div>
<!-- Comienza tabla contenido -->
<table width="380" height="35" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="2" bgcolor="#FFFFFF"><img src="images/disenos/base/tit_barra_blanco.gif" width="2" height="2"></td>
</tr>
<tr>
<td bgcolor="#333333"><div align="center" class="texto_12_blanco_bold">
<!-- Comienza tabla 1 columnas -->
<table width="227" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"><div align="center">
<br><img src="images/disenos/perfil/iconos/search-icon-orange.gif" border="0"><br><img src="images/disenos/perfil/iconos/search-folder-orange.gif" border="0"><br><img src="images/disenos/perfil/iconos/search-grey.gif" border="0"> </td>
<td width="207"><div align="left">
<br><a href="javascript:paginas('index.php?ir=menu_buscar_perfiles&tipo=sencilla&accion=mostrar_index', 'capa_sms_1_completo',200)">Busqueda sencilla<br><a href="javascript:paginas('index.php?ir=menu_buscar_perfiles&tipo=avanzado&accion=mostrar_index', 'capa_sms_2_completo',200)">Busqueda avanzada<br><a href="javascript:paginas('index.php?ir=menu_buscar_perfiles&tipo=nick&accion=mostrar_index', 'capa_sms_3_completo',200)">Búsqueda por Nick </td>
</tr>
</table>
<!-- Termina tabla 2 columnas -->
<br><br></div></td>
</tr>
<tr>
<td width="350" height="2" bgcolor="#FFFFFF"><div align="center"><img src="images/disenos/base/tit_barra_blanco.gif" width="2" height="2"></div></td>
</tr>
</table>
<!-- Termina tabla contenido -->
2- Cuando se hace click para abrir las búsquedas, se llama a una función en javascript (paginas()) que carga un trozo de página web en una de las 3 capas disponibles.
Hasta aquí todo bien.
3-En 2 capas se puede elegir un páis de procedencia, y cuando se elige el país, se lanza una instancia de tipo:
Código HTML:
<select class="reg_elegir" name="pais" onchange="document.forms.buskeda_avanzada.action='index.php?ir=menu_buscar_perfiles&tipo=index&mostrar_layer=avanzado&provincia_select=ok'; document.forms.buskeda_avanzada.submit()"><option selected value="-1"></option><option value="4">Alemania</option>
De forma que aparecen la provincias correspondientes, y es aquí donde justamente da el error, al cargarse esta última página.
4- Lo que ocurre al cargarse esa página es que, al ser una web+un layer, necesito volver a cargar el layer de nuevo, y lo hago mediante esto:
Código HTML:
<script type="text/javascript"> paginas("index.php?ir=menu_buscar_perfiles&tipo=avanzado&accion=mostrar_index&provincia_select=ok&pais_id=4","capa_sms_2_completo",200);
</script>
(El país se obtiene gracias a un _POST en php del campo pais)
Todo se hace correctamente, pero el internet explorer me da el error.. Y creo que es por esta última función.
Os pego la parte de código que tengo en el js que se utiliza para estas secciones de la web:
Código HTML:
//////////////////////////////////////////////
///Funciones para las opciones de busqueda////
//////////////////////////////////////////////
// Documento JavaScript
// Esta función cargará las paginas
function paginas (url, id_contenedor, left_sum)
{
var pagina_requerida = false;
if (window.XMLHttpRequest)
{
// Si es Mozilla, Safari etc
pagina_requerida = new XMLHttpRequest ();
} else if (window.ActiveXObject)
{
// pero si es IE
try
{
pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
}
catch (e)
{
// en caso que sea una versión antigua
try
{
pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
}
catch (e)
{
}
}
}
else
return false;
pagina_requerida.onreadystatechange = function ()
{
// función de respuesta
cargarpagina (pagina_requerida, id_contenedor,left_sum);
}
pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send
pagina_requerida.send (null);
}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina (pagina_requerida, id_contenedor,left_sum)
{
if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1))
document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText;
//Cambiamos posicion de la capa segun la resolucion
layers_posic(id_contenedor,left_sum);
var cuadro = document.getElementById(id_contenedor);
cuadro.style.visibility = "visible";
//Solución c-tre a usuarios que no cierran
var guardar;
//Recorremos las 3 capas para obtener la referencia numérica de la capa a mostrar
for(var i=1;i<4;i++)
{
var cuadro2 = document.getElementById("capa_sms_"+i+"_completo");
if(id_contenedor == cuadro2)
{
guardar=i;
}
}
//Ahora que ya tenemos la referencia numérica, recorremos de nuevo las 3, y hacemos que se muestren todas con hidden salvo la actual.
for(var j=1;j<4;j++)
{
var cuadro3 = document.getElementById("capa_sms_"+j+"_completo");
if(j != guardar)
{
cuadro3.style.visibility = "hidden";
}
}
cuadro.style.visibility = "visible";
}
//Función para modificar la posicion de diferentes layers según la resolución
function layers_posic(id_contenedor, left_sum)
{
var cuadro = document.getElementById(id_contenedor);
var suma;
if(screen.width < 900)
{
suma = 0 ;
}
else if(screen.width < 1024)
{
suma = 70 ;
}
else if(screen.width < 1200)
{
suma = 160 ;
}
else if(screen.width < 1400)
{
suma = 240 ;
}
else if(screen.width < 1500)
{
suma = 320 ;
}
else
{
suma = 400 ;
}
cuadro.style.left = left_sum + suma;
}
El código de 2 de las funciones me lo encontré por los foros

Y lo he reutilizado para mis necesidades..
Se que es un poco complejo de entender... pero a ver si alguien me puede echar un cable. Lo agradecería muchísimo :D
Gracias!!