• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Uncaught TypeError: Cannot call method 'appendChild' of nul

jumbo125

Mitglied
ich versuche nun schon ewig lange, einen Text (mittels javascript) einzufügen, sobald eine if Abfrage endet.

liegt extern in einer js datei
Code:
    function off() {document.getElementById("album").style.display = "none";
var jselement = document.createElement("p");
var jstext;
jstext = document.createTextNode("Album ist nicht verschlüsselt. Freier zutritt");
jstext = document.getElementById("jstext");
jstext.appendChild(jselement);
}

liegt extern in einer css datei
#jstext{position:absolute;
top:400px;
left: 600px;
width:20px;
height:16px;
font-size: 15px;
color: white;
}

steht in der html datei:
<body>
...
<input type="radiobutton" class="radio" ..... onclick="off()"; />
...
...
<p class="jstext"></p>

ich hab schon einiges gelesen. der Fehler kommt,w eil das DOM nicht fertig geladen ist. Einige meinten, man könnte das Problem lösen, wenn man den code in den body-tag schreibt -> kein Erfolg.
andere meinten direkt in den Head -> kein erfolg

und andere behaupteten diese function mit einen "window:loader" zu starten. Klingt logisch, aber ich starte die Funktion, wenn auf ein Radiobutton geklickt wird.

Hat jemand eine Idee?
 
Nein, laut dem von dir geposteten Code hast du

PHP:
<p class="jstext"></p>
und nicht
PHP:
<p id="jstext"></p>

außerdem ist JavaScript ziemlich egal ob du etwas in der CSS definiert hast oder nicht.
 
sorry. Habs jetzt umgeändert auf ne id. Fehler kommt nun keiner, aber der Text bleibt ebenfalls aus.
Ich brauche den text auch nicht formatiert. Ich will ihn einfach in das Dokument einfügen. kann gleich an der Stelle im html tag sein.
 
Code:
jselement = document.createElement("p");
jstext = document.createTextNode("Album ist nicht verschlüsselt. Freier zutritt");
jstext = document.getElementById("jstext");
jstext.appendChild(jselement);

Der logische Fehler liegt hier in den Zeilen zwei und drei.
 
Hallo!

Das, was du in deinem Code machst, ist leider nichtsbringend.

Erst weist du der Variablen jstext einen Nofe zu und danach ersetzt du den Inhalt der Variablen durch das bestehende Element jstext. An deiner Szelle würde ich es so machen:
Code:
document.getElementById("jstext").innerHTML= "Das Album ist...";

Das ist kürzer und sollte auch funktionieren.

Solltest du dich dazu entscheiden, JQuery zu nutzen, so sähe der Javascript-Code so aus:
Code:
$("#jstext").html("Das Album...");
 
Zuletzt bearbeitet:
Hallo!

Das, was du in deinem Code machst, ist leider nichtsbringend.

Erst weist du der Variablen jstext einen Nofe zu und danach ersetzt du den Inhalt der Variablen durch das bestehende Element jstext. An deiner Szelle würde ich es so machen:
Code:
document.getElementById("jstext").innerHTML= "Das Album ist...";

Das ist kürzer und sollte auch funktionieren.

Solltest du dich dazu entscheiden, JQuery zu nutzen, so sähe der Javascript-Code so aus:
Code:
$("#jstext").html("Das Album...");

Mir fehlen die Worte. Genie :D
 
Zurück
Oben