minicrispie: Problem mit appendChild()...

Hallo alle zam,

ich hab mal wieder ein Problem: und zwar möchte ich (versuchen) eine Alert-Box nachzustellen. Ich hab es auch schon geschafft sie zu erzeugen. Nur will ich sie bei einem Klick auch wieder "löschen". Ich habe es schon mit visibility="hidden" versucht. Klappt zwar - die Box ist weg. aber wenn ich diese dann erneut aufrufen will kommt nichts mehr. ich brauche eure Hilfe !

Also hier das Skript und die Seite

Danke schon mal im vorraus :-)

MfG. Christoph

--
Wo die Sprache aufhört, fängt die Musik an...
ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
  1. Hallo,

    Also hier das Skript und die Seite

    Das Dokument hat einen groben HTML-Fehler und der Button erscheint daher gar nicht - das script-Element wird nicht geschlossen.

    Wenn ich das repariere, funktioniert das Meldungsfenster zumindest. Wenn du weitere Meldungsfenster mit anderem Inhalt anzeigen willst, dann solltest du dir ausdenken, wie du dein Script strukturierst. Das gegenwärtige Script hängt Elemente in ein anderes Element ein. Wenn du Elemente versteckst, sind sie selbstverständlich noch da, und wenn du das gegenwärtige Script noch einmal aufrufst, werden einfach zusätzliche Elemente eingehängt.

    Was du also machen kannst: Entweder abfragen, ob die Elemente schon erzeugt wurden (z.B. prüfen, was document.getElementById("Meldung_Titel") zurückgibt). Dann sprichst du die Elemente an, dessen Inhalt geändert werden soll und änderst die Textknoten entsprechend (nodeValue der Textknoten ändern oder einfacher innerHTML des Elementes setzen).
    Oder die Elemente beim Ausblenden des Meldungsfensters löschen und dann neu erzeugen und einhängen.

    Dann noch einige Tipps:

    • Auf createAttribute kannst und solltest du immer verzichten. Benutze einfach setAttribute("name", "wert").
    • Style-Informationen solltest du immer aus dem Script heraushalten und ins Stylesheet auslagern. Im JS setzt du dann einfach Klassen oder IDs (das tust du ja eh), sodass die Formatierungen aus dem Stylesheet wirken.
    • JavaScript-Event-Handler solltest du nicht mit setAttribute setzen, sondern altmodisch über element.onclick = handlerfunktion;. Also z.B. Button_Bereich.onclick = OK; (ohne Klammern hinter dem Funktionsnamen).
    • Lokale Funktionsvariablen (die mit var notiert werden) musst du nicht mit delete am Ende der Funktion löschen - die verfallen automatisch, wenn die Funktion beendet wird.

    Mathias