Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Error: Se requiere un objeto (internet explorer)

Estas en el tema de Error: Se requiere un objeto (internet explorer) en el foro de Frameworks JS en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 04/04/2007, 18:04
 
Fecha de Ingreso: febrero-2006
Mensajes: 20
Antigüedad: 18 años, 2 meses
Puntos: 0
Error: Se requiere un objeto (internet explorer)

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!!
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 08:40.