2010-04-13 4 views
15

Ich habe document.GetElementById erfolgreich verwendet, aber von Zeit zu Zeit kann ich es nicht wieder arbeiten lassen. Alte Seiten, in denen ich es immer noch verwendet arbeiten, aber die Dinge so einfach wie diese:Warum ist document.GetElementById nullwertig

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

geben mir „document.getElementById (“ parsedOutput „) ist null“ die ganze Zeit jetzt. Es spielt keine Rolle, ob ich Firefox oder Chrome verwende oder welche Erweiterungen ich aktiviert habe oder welche Header ich für das HTML verwende, es ist immer null und ich kann nicht finden, was falsch sein könnte.

Vielen Dank für Ihre Eingabe =)

Antwort

36

Die Seite wird von oben nach unten gerendert. Ihr Code wird unmittelbar nach dem Parsen ausgeführt. Zum Zeitpunkt der Ausführung existiert das Div noch nicht. Sie müssen es in eine window.onload-Funktion einfügen.

24

Versuchen Sie folgendes:

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

Der Browser das Skript ausführen wird, sobald er es findet. Zu diesem Zeitpunkt ist der Rest des Dokuments noch nicht geladen - es gibt noch kein Element mit dieser ID. Wenn Sie den Code nach diesen Teil des Dokuments geladen wird, wird es einwandfrei funktionieren.

4

Ohne window.onload Ihr Skript wird nie aufgerufen. Javascript ist eine ereignisbasierte Sprache, also ohne ein explizites Ereignis wie onload, onclick, onmouseover, werden die Skripte nicht ausgeführt.

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

Onload event:

Die Last-Ereignis ausgelöst am Ende des Dokuments Ladevorgangs. Zu diesem Zeitpunkt befinden sich alle Objekte im Dokument im DOM und alle Bilder und Unterrahmen sind fertig geladen.

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> 

Verwenden += mehr eventHandler s zuweisen Ereignis des Dokuments onload.

+0

Das hat nichts für mich getan. – Mixxiphoid