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:
Esta función es invocada mediante un botón de formulario simple.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.";}
}
{
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.";}
}
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:
Por eso se que este tipo de llamadas no funcionan cuando se carga la página dentro de un div.var elem2 = document.getElementById("contenedor4");
if(elem2==null)
{alert("no se encontró contenedor4");}
if(elem2==null)
{alert("no se encontró contenedor4");}
¿Alguna sugerencia?
Espero haberme explicado bien
Un saludo desde Lima, Perú