• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

[Javascript]Ganz simples "cument.getElementById" funktioniert nicht?

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
Ich werde noch wahnsinnig. Warum gibt es immer einen Error?:-c
test.html:5
TypeError: Result of expression 'parent' [null] is not an object.

Meine simple Datei.
Code:
<head>
<script type="text/javascript">
var parent = document.getElementById("ParentTitle");
var titleindocument = document.getElementById("Title");
parent.RemoveChild(titleindocument);
</script>
</head
<body>	
<div id="ParentTitle">Test<div id="Title">Test2</div></div>
</body>
Ich möchte nur ein das div mit der id="Title" löschen. Mehr nicht.
Ich wäre dem sehr dankbar, der mir helfen kann.
"titleindocument" geht irgendwie ohne Probleme.
diverse Seiten im Internet machen es nicht wirklich anders als ich.
mfg
 
Zu dem Zeitpunkt, an dem dein JS-Code ausgeführt wird, ist der Markup noch nicht vorhanden. Also entweder warten, bis das Dokument geladen hat (Stichwort „window.onload“) oder den JS-Code nach unten schieben.
 
window.onload = function()
sowie <body onload="function()">
beheben nicht das Problem. Den Code würde ich gerne oben stehen haben.

Selbst setTimeout("function()",3000) lässt das Problem nur verzögert auftreten. Und die Seite ist nach 3 Sekunden geladen.
 
1. Ein setTimeout für das Verhindern eines solchen Fehlers ist ein absolutes no-go!
2. Der deutsche Ausdruck für onLoad ist schlicht "WÄHREND dem Laden", d.h., dein div-tag muss noch nicht definiert sein, kann aber, je nach Browser...
3. Ab in eine Funktion damit und am Schluss des Dokumentes ein JS-Tag um diese Funktion aufzurufen.
 
  • Like
Reaktionen: Bomberzocker
hey danke. Geht das auch dann mit Funktionen in einer Funktion? Hab das noch nie getestet. Ich habe im Moment ca. 300 Zeilen Code den ich dann in die Funktion stecken müsste.
 
mhh das mit Funktionen in einer Funktion ist so eine Sache:

kurze Erläuterung von public und private in JS:

function func1(){ // im window object eingebunden, kann von überall verwendet werden
function func2(){}; // im "Object" der func1 eingebunden, kann also nur im func1 verwendet werden

var func3=function(){}; // gleicher Fall wie mit func2

this.func4=function(){}; // wird über obj.func4() aufgerufen, ist sozusagen Element des func1 objectes, wenn es durch var obj=new func1() im window object deklariert wurde

func 5=function(){}; // wird im window object eingebunden, aber nur dann, wenn ein Objekt von func1 deklariert wird, sonst ist diese Funktion nicht aufrufbar

}

bei Fragen, kannste mir auch ne pm schreiben, habe mich die letzte Zeit viel mit Prototyping und Objects in JS auseinandergesetzt. Das mit der Vererbung von Objekten wird noch einmal eine noch viel spannendere Angelegenheit.
 
Was du brauchst und suchst, ist so etwas wie jQuerys ready(). Die Option mit setTimeout ist unsauber und theoretisch nicht immer funktionsfähig (wobei es unrealistisch wäre).

Bzgl. private/public: Ein sehr sinnvolles Pattern ist das sog. Javascript Module Pattern, bspw. hier schön in deutsch erklärt. Habe ich nur überflogen, war das erste Suchergebnis in deutsch dafür.