Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2012, 19:28
Avatar de freesoftwarrior
freesoftwarrior
 
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 9 meses
Puntos: 10
Problema con getElementById

Buenas noches:
Veamos..... tengo esta línea en mi código JS

var elem2 = document.getElementById("contenedor4");

y esta en un archivo JS cargado en la página PRINCIPAL.ASP

En esta página hay un div con el id detalle en el cual se carga la página listado.asp mediante este código:

Cita:
function detalles()
{
if (document.getElementById)
{
var el1 = document.getElementById("detalle");
el1.style.display = (el1.style.display == 'none') ? 'block' : 'none';
}

var req = false;

if (window.XMLHttpRequest) // For Safari, Firefox, and other non-MS browsers
{
try
{req = new XMLHttpRequest();}
catch (e)
{req = false;}
}
else if (window.ActiveXObject) // For Internet Explorer on Windows
{
try
{req = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e)
{
try
{req = new ActiveXObject("Microsoft.XMLHTTP");}
catch (e)
{req = false;}
}
}

//req.expires=-1;
var element = document.getElementById("detalle");
if (!element)
{alert("El ID " + id + "enviado a clientSideInclude es erróneo. Se necesita un elemento DIV o SPAN con este ID en el módulo."); return;}
if (req)
{
// Synchronous request, wait till we have it all
url="listado.asp";
req.open('GET', url, false);
req.send(null);
element.innerHTML = req.responseText;
}
else
{element.innerHTML = "Lo sentimos pero su navegador no soporta objetos XMLHttpRequest. Esta página requiere Internet Explorer 8 o superior para Windows, Firefox para cualquier sistema, o Safari. Otros navegadores compatibles también pueden ser utilizados.";}
}
Esta función es invocada mediante un botón de formulario simple.

Ahora bien, la llamada con getElementById que indico al inicio de este post, hace referencia a un div que se encuentra en la página listado.asp y simplemente NO lo encuentra. Sin embargo, obvio, si pongo el código de la página listado.asp dentro de la página principal.asp justo donde esta el div detalle, pues funciona normal y encuentra el elemento.

No tomé atención a este detalle porque cuando hago esto, el cargar páginas en un div, las funciones cargadas en la página principal.asp son usadas por la página listado.asp sin ningún problema, EXCEPTO estas llamadas con getElementById.

Comprobé esto colocando estas líneas adicionales

Cita:
var elem2 = document.getElementById("contenedor4");

if(elem2==null)
{alert("no se encontró contenedor4");}
Por eso se que este tipo de llamadas no funcionan cuando se carga la página dentro de un div.

¿Alguna sugerencia?

Espero haberme explicado bien

Un saludo desde Lima, Perú