till: funktionsaufruf durch eventhandler in document.write()

Hallo, ich fange gerade erst an mich mit JS zu beschäftigen und komme an einer Stelle nicht weiter.

Ich habe ein Element mit document.write() erzeugt und mit CSS formatiert, so weit so gut. Nun hätte ich gerne einen event Handler für dieses Objekt der mir eine Funktion aufruft. Ich hatte gehofft, dass es os funktioniert.

document.write('<button onclick="deletetask()">löschen</button>');

Dann kommt immer die Fehlermeldung "Objekt erwartet". Die Funktion ist erstellt und beinhaltet keinen Fehler.

Ich habe schon versucht den Eventhandler als Variable zu übergeben.

var befehl= 'onclick="deletetask()"';
document.write('<button '+befehl+'>löschen</button>');

Dasselbe Problem.

Geht das überhaupt oder ist mein Ansatz schoin falsch.

Wäre schon froh, wenn mir jemand den Ansatz erklärt und natürlich noch mehr wenn es eine Lösung geben sollte.

Vielen Dank

Till

  1. Okay,

    jetzt weiß ich, woran es liegt. Da das Dokument mit document.write neu geschrieben wird, sind alle Funktionen usw nicht mehr da. Wie gemein. Gibt es denn eine Lösung? Könnte ich mir mit document.write eine Funktion schreiben, die ich dann aufrufen kann? Am liebsten hätte ich es auch noch rekursiv. Die Funktion, in der die ganzen document.write Befehle stehen, ist muss sich wiederaufrufen können.

    Vielleicht gibt es ja noch Hoffnung.

    Merci

    Till

    1. Hi!

      ja. document.write ist fuer sowas nicht wirklich empfehlenswert. Je nach Situation kannst du innerhtml benutzen oder du gehst gleich ueber das DOM. (http://de.selfhtml.org/javascript/objekte/node.htm@title=Node)

      Kannst an jedes Element per JS Eventhandler dranpappen. document.getElementById("elementid").onclick= function {alert(Hallo Welt!";}

      --
      Trau Dich!
       
      1. Vielen Dank für die Antwort,

        ich sehe schon ich komme um Knoten nicht herum. Wirkt nicht so leicht und etwas umständlich.

        Grüße

        Till

        1. Moin Moin!

          ich sehe schon ich komme um Knoten nicht herum. Wirkt nicht so leicht und etwas umständlich.

          Aber wesentlich sauberer. Die Knoten bilden exakt den Dokumentenbaum ab, Javascript bietet allerdings zahlreiche Attribute und Methoden an, um vom einen zum anderen Knoten zu kommen.

          Vielleicht hilft es Dir, eine einfache HTML-Datei einmal sauber einzurücken, auszudrucken, und dann zu jedem Element ("node") je einen Pfeil zum parent, zum firstChild, und zum lastChild zu machen. Whitespace (Zeilenumbrüche, Tabulatoren, Leerzeichen) erzeugt ebenfalls Knoten, darauf fällt man gerne mal herein.

          Dann kannst Du anhand der Zeichnung mal das eine oder andere Element ansprechen und z.B. per style zu markieren, so etwas wie document.getElementById("foo").firstChild.lastChild.firstChild.style.border="2px solid red"; (Wer sowas produktiv einsetzt, muß sehr verzweifelt sein. ;-) )

          Neue Unterbäume erzeugt Du im prinzip genau so. Wo Du bisher document.write("<p>bla</p>") genutzt hast, erzeugst Du jetzt ein P-Element, dem Du ein Text-Element als einziges Kind anhängst; dann hängst Du das P-Element an passender Stelle in den Dokumentbaum ein.

          Alexander

          --
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".