Problem mit document.write()
Christian
- javascript
Hallo,
ich habe folgende Funktion geschrieben:
-----
function SHOWMENU(id) {
JSEMNUCONTENT = "";
for(var i=0;i<JSMENUNAV[id].length;i++) {
JSEMNUCONTENT+="+ "+JSMENUNAV[id][i]+"<br>";
}
document.write("<div id='Layer1' style='position:absolute; left:370px; top:35px; width:165px; height:114px; z-index:2'>"+JSEMNUCONTENT+"</div>");
JSMENUOPEN = id;
alert (JSMENUOPEN);
}
-----
diese rufe ich dann z.b. per onMouseOver auf.
Wenn Sie dann ausgeführt wird (was auch problemlos Funktioniert). Wird die HTML-Seite "neu" geschrieben, der Content der Seite verschwindet und es wird nur noch der Quelltext angezeigt, den ich per document.write ausgebe. Wie kann ich das verhindern, so das das Layer normal in der Seite erscheint ?
MFG & danke für hilfe
cb
Hallo Christian.
Wenn Sie dann ausgeführt wird (was auch problemlos Funktioniert). Wird die HTML-Seite "neu" geschrieben, der Content der Seite verschwindet und es wird nur noch der Quelltext angezeigt, den ich per document.write ausgebe.
Das ist das normale Ergebnis der write-Methode, so wie du sie anwendest.
Wie kann ich das verhindern, so das das Layer normal in der Seite erscheint ?
Ändere den Inhalt bzw. die Eigenschaften des Layers mit Hilfe von DHTML. Oder schau dir den Beitrag Dynamische Menüs mit DHTML an.
Freundschaft!
Siechfred
Hallo,
danke für den Hinweis. Ich würde praktisch das menu auf Hidden stellen beim start und dann halt anzeigen lassen per visible bzw. show je nach browser. Aber wo ich nun wirklich dann nicht weiter weiß, ist wie ich dem Menu dann den "neuen" Inhalt beibringe? (und nicht so kompliziert soll es sein will noch was lernen und nicht nur copy und paste bis es irgendwann geht oder nicht =/)
Hallo Christian.
Aber wo ich nun wirklich dann nicht weiter weiß, ist wie ich dem Menu dann den "neuen" Inhalt beibringe?
Indem du die Menüeinträge gleich in den HTML-Code schreibst. Das dynamische Menü bewirkt vereinfacht gesagt nur das Ein- und Ausblenden von Menüteilen. Schau dir im verlinkten Artikel dazu den Teil innerhalb des body an und rufe das Beispiel mal auf.
Freundschaft!
Siechfred
Hallo,
ja das war ein Beispiel meinerseits von zuerst denken dann schreiben. Nun bin ich aber ernsthaft an ein kleines Problem gestoßen, da ich zwar weiß wie ich Text dynamische einfüge ich aber z.b. Formatierungen wie <bt> mitgeben will.
Probieren war bisher :
document.all.MENU1.innerText = JSEMNUCONTENT;
// geht in IS mittels "\n" als Zeilenumbruch (Mozilla gehts nicht)
document.all.MENU1.innerHTML = JSEMNUCONTENT;
// das was ich Suche (Mozilla gehts nicht)
var JSEMNUCONTENT = document.createTextNode(JSEMNUCONTENT);
document.getElementById("MENU1").appendChild(JSEMNUCONTENT);
// geht zwar in beiden aber now way für HTML Formate
document('MENU1').document.open();
document('MENU1').document.write(JSEMNUCONTENT);
document('MENU1').document.close();
// geht in beiden nicht ist glaub ich auch nichtmehr "uptodate"
also das alles habe ich probiert entferne mich aber immer mehr meinem Ziel =/. Gibt es keine Standard Lösung die in beiden Kompatibel ist Mozilla kann ja DOM.
danke
cb
hi,
also das alles habe ich probiert entferne mich aber immer mehr meinem Ziel =/. Gibt es keine Standard Lösung die in beiden Kompatibel ist Mozilla kann ja DOM.
innerHTML ist aber recht weit davon entfernt, etwas mit dem DOM zu tun zu haben.
hast du es schon mal "richtig" über das DOM versucht ...?
gruß,
wahsaga
Nein das ist einfach die hierariche wiedergabe meiner Versuche.
Zwischendrinn habe ich ja DOM versucht aber da kann ich halt kein <br> oder so mitgeben weils ein äquivalent (schreibt man das so *g*) zu innerHTML gibt. Und mit an den Angaben aus SELFHTML komm ich net weiter.
hi,
Zwischendrinn habe ich ja DOM versucht aber da kann ich halt kein <br> oder so mitgeben
natürlich kannst du.
ein <br> ist ein objekt wie jedes andere auch - also erzeugst du einen knoten dafür, und hängst ihn ins dokument ein, bevor du den nächsten (text)knoten folgen lässt.
gruß,
wahsaga
Hallo,
danke werde ich bei gelegenheit versuchen. Habe es gerade nochmal mit innerHTML versucht und es ging sowohl in Mozilla als auch IE ich werde nun das mal benutzen erstmal ka wieso es eben nicht ging.
Danke nochmal für die Hilfe habe viel gelernt.