2010-04-13 34 views
15

He estado utilizando document.GetElementById con éxito pero desde algún momento no puedo hacer que funcione de nuevo. páginas antiguas en el que he usado todavía funciona, pero las cosas tan simples como esta:¿Por qué document.GetElementById devuelve nulo

<html> 
<head> 
<title>no title</title> 
<script type="text/javascript"> 
document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
</script> 
</head> 
<body> 
<div id="ThisWillBeNull"></div> 
</body> 
</html> 

me están dando "document.getElementById (" parsedOutput ") es nulo" todo el tiempo ahora. No importa si utilizo Firefox o Chrome o qué extensiones he habilitado o qué encabezados uso para el html, siempre es nulo y no puedo encontrar lo que podría estar mal.

Gracias por su entrada =)

Respuesta

36

La página se representa de arriba a abajo. Tu código se ejecuta inmediatamente después de ser analizado. En el momento de la ejecución, el div aún no existe. Debe envolverlo en una función window.onload.

24

Prueba esto:

<script type="text/javascript"> 
    window.onload = function() { 
    document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
    } 
</script> 
1

El navegador se va a ejecutar ese guión tan pronto como se encuentra. En ese momento, el resto del documento aún no se ha cargado; todavía no hay ningún elemento con esa identificación. Si ejecuta ese código después de esa parte del documento está cargada, funcionará bien.

4

Sin window.onload su secuencia de comandos nunca se invoca. Javascript es un lenguaje basado en eventos por lo que sin un evento explícito como onload, onclick, onmouseover, los scripts no se ejecutan.

<script type="text/javascript"> 
    window.onload = function(){ 
    document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
    } 
</script> 

proceso de carga:

la carga activa el evento al final del proceso de carga de documentos. En este punto, todos los objetos en el documento están en el DOM, y todas las imágenes y subtramas han terminado de cargarse.

https://developer.mozilla.org/en/DOM/window.onload

1
<script type="text/javascript"> 
    window.onload += function() { 
    document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
    } 
</script> 

Uso += para asignar más eventHandler s a onLoad caso de documento.

+0

Esto no hizo nada por mí. – Mixxiphoid

Cuestiones relacionadas