• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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
 

bezierkurve

Halberstädter Jungfernapfel
Registriert
12.06.05
Beiträge
3.860
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.
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
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.
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
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

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
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.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
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.
 

knalli

Stechapfel
Registriert
19.01.10
Beiträge
159
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.