2010-04-13 28 views
15

Sto usando document.GetElementById con successo ma da qualche tempo non riesco a farlo funzionare di nuovo. Vecchie pagine in cui ho usato ancora lavorare, ma le cose semplici come questo:Perché document.GetElementById restituisce null

<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> 

mi stanno dando "document.getElementById (" parsedOutput ") è nullo" tutto il tempo. Non importa se utilizzo Firefox o Chrome o quali estensioni ho abilitato o quali intestazioni utilizzo per l'html, è sempre nullo e non riesco a trovare cosa potrebbe essere sbagliato.

Grazie per il vostro input =)

risposta

36

La pagina viene visualizzata dall'alto verso il basso. Il codice viene eseguito immediatamente dopo averlo analizzato. Al momento dell'esecuzione, il div non esiste ancora. È necessario avvolgerlo in una funzione window.onload.

24

Prova questo:

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

Il browser sta per eseguire lo script, non appena lo trova. A quel punto, il resto del documento non è ancora stato caricato - non c'è ancora alcun elemento con quell'ID. Se si esegue il codice dopo il quella parte del documento è caricata, funzionerà correttamente.

4

Senza window.onload il tuo script non viene mai richiamato. Javascript è una lingua basata su eventi quindi senza un evento esplicito come onload, onclick, onmouseover, gli script non vengono eseguiti.

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

evento Onload:

evento viene

carico alla fine del processo di caricamento documento. A questo punto, tutti gli oggetti nel documento si trovano nel DOM e tutte le immagini e le sottoquadrature hanno completato il caricamento.

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> 

Usa += per assegnare più eventHandler s per OnLoad caso di documento.

+0

Questo non ha fatto nulla per me. – Mixxiphoid

Problemi correlati