neues DIV in body einfügen
Felix Riesterer
- javascript
Liebe Forumsgemeinde,
ich versuche nun schon seit einer Stunde, per document.getElementsByTagName("body")
auf den <body> meines HTML-Dokumentes zuzugreifen, um ihm per appendChild()
ein neues DIV einzuhängen. Es führt im FF aber immer zu der Fehlermeldung "htmlBody has no properties"... Was mache ich falsch?
Vollversion des Codes:
var mausTip = document.createElement("div");
var htmlBody = document.getElementsByTagName('body')[0];
mausTip.id = "maus-tip";
htmlBody.appendChild(mausTip); // Konsole meldet "htmlBody has no properties"
Liebe Grüße aus Ellwangen,
Felix Riesterer.
hi,
ich versuche nun schon seit einer Stunde, per
document.getElementsByTagName("body")
auf den <body> meines HTML-Dokumentes zuzugreifen,
Und an der einfachen, m.W. jedem DOM-fähigen Browser bekannten und automatisch vorhandenen Referenz document.body gefällt dir _was genau_ nicht ...?
gruß,
wahsaga
hi,
ich versuche nun schon seit einer Stunde, per
document.getElementsByTagName("body")
auf den <body> meines HTML-Dokumentes zuzugreifen,Und an der einfachen, m.W. jedem DOM-fähigen Browser bekannten und automatisch vorhandenen Referenz document.body gefällt dir _was genau_ nicht ...?
gruß,
wahsaga
Hi !
Na, vielleicht mag er das innerHTML nicht, das man an document.body hinten hin schreiben muss, damit dann document.body.innerHTML da steht.
Gruß
Hans
hi,
Na, vielleicht mag er das innerHTML nicht, das man an document.body hinten hin schreiben muss, damit dann document.body.innerHTML da steht.
Nichts und niemand zwingt ihn, document.body in Verbindung mit innerHTML zu nutzen.
gruß,
wahsaga
Lieber wahsaga,
ich schätze Deine hilfreichen Ratschläge sehr, jedoch hier komme ich nicht weiter:
Und an der einfachen, m.W. jedem DOM-fähigen Browser bekannten und automatisch vorhandenen Referenz document.body gefällt dir _was genau_ nicht ...?
Die Anweisung document.body.appendChild(mausTip);
führt zu folgender Konsolenmeldung (FF): "document.body has no properties"...
Liebe Grüße aus Ellwangen,
Felix Riesterer.
hi,
Die Anweisung
document.body.appendChild(mausTip);
führt zu folgender Konsolenmeldung (FF): "document.body has no properties"...
Führst du das ganze vielleicht _zu früh_ aus - noch bevor es einen body gibt?
Wenn du irgendwelche DOM-Manipulationen machen willst, solltest du natürlich immer den onload-Event abwarten - damit erst mal ein Dokument existiert, welches du beackern kannst.
gruß,
wahsaga
Lieber wahsaga,
Führst du das ganze vielleicht _zu früh_ aus - noch bevor es einen body gibt?
Das könnte sein... Ich habe eine extern eingebundene Javascript-Datei. In dieser Datei notiere ich (quasi im (nennt man das so?) root scope) die oben geposteten Anweisungen. ich habe keine Ahnung, ob zu diesem Zeitpunkt schon ein body existiert (die Datei wird ja im head referenziert).
Sollte also noch kein body existieren, wie kann ich "unobtrusively" einen <body onload=""> simulieren? Ein document.onload = init;
brachte keine Besserung. Ein attachEvent() geht wohl auch erst, wenn denn ein body existiert...
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi,
Sollte also noch kein body existieren, wie kann ich "unobtrusively" einen <body onload=""> simulieren? Ein
document.onload = init;
brachte keine Besserung. Ein attachEvent() geht wohl auch erst, wenn denn ein body existiert...
window.onload, nicht document.onload.
cu,
Andreas
Lieber MudGuard,
window.onload, nicht document.onload.
vielen Dank für diesen Hinweis. Er kommt allerdings nicht früh genug... ;-)
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo,
Die Anweisung
document.body.appendChild(mausTip);
führt zu folgender Konsolenmeldung (FF): "document.body has no properties"...
Also das ganz einfache Beispiel:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>test</title>
<script type="text/javascript">
// <![CDATA[
[code lang=javascript]
function test() {
var mausTip = document.createElement("div");
document.body.appendChild(mausTip);
mausTip.innerHTML = 'test';
}
window.onload = test;
// ]]>
</script>
</head>
<body>
</body>
</html>
[/code]
funktioniert einwandfrei.
Gruß, Jan
Lieber Jan,
window.onload = test;
DAS ist die Lösung!!! Wenn ich window.onload = init;
in meiner externen Javascript-Datei notiere, dann wird meine Funktion init() erst ausgeführt, wenn das body-Element verfügbar ist. Damit hat sich mein Problem gelöst!
Dank an Dich, und natürlich an wahsaga, dessen Verdacht auf ein noch nicht verfügbares body-Element überhaupt erst den Lösungsweg möglich gemacht hat!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi,
ich denke du musst das [0] bei document.getElementsByName('body') weglassen.
Da es nur ein einziges Body-Tag geben kann.
MfG
Hallo NicoleK.
ich denke du musst das [0] bei document.getElementsByName('body') weglassen.
Da es nur ein einziges Body-Tag geben kann.
Letzteres ist zwar richtig, aber dennoch muss ja dieses eine Element in der Kollektion referenziert werden. Ohne Index erhältst du lediglich „[object NodeList]“ oder etwas Vergleichbares.
Im Allgemeinen sollte man aber document.body nutzen, schließlich ist es dafür da.
Einen schönen Mittwoch noch.
Gruß, Ashura
Hallo Felix Riesterer,
das hilft dir jetzt vieleicht nicht weiter, aber bei mir gehts. Kann es sein, dass du das DIV nicht gesehen hast? Gib ihm mal einen Rahmen oder Inhalt. War der BODY schon da (onload)?
Ich habe übrigens beide Varianten getestet: document.getElementsByTagName('body')[0] und document.body.
Gruß, Jürgen