• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

[JavaScript] Button erzeugen / Funktion aufrufen

Alecco

Transparent von Croncels
Registriert
17.02.09
Beiträge
306
Hi,

ich erzeuge ein Formular mit JavaScript. Ich habe auch einen Button erzeugt, aber ich weiß nicht, wie ich ihm ein onClick Event zuweisen kann.

Ich habe bisher folgendes:

Code:
...
document.write("<input type='button' value='weiter' onClick="+test()+">");
...


Mit diesem Code wird die Funktion direkt beim Laden der Seite aufgerufen.
 
Ich glaube das was du da geschrieben hast willst du nicht ;-)

wenn du die Funktion durch den Button aufrufen willst, musst du die "+" wegmachen (alles 1 String). Und natürlich muss die Funktion test() definiert sein...
 
Ich bin ein Javascript Künstler aber muss das nicht so gehen?
onClick="+test+()">"); ???
 
Also wenn es nur 1 String ist, dann passiert bei mir nicht.

BTW:

Code:
function test(){
    alert("Es klappt!");    
}

:D
 
Ich übersetze mal, was Du da geschrieben hast (sollte eigentlich für jeden Programmierer offensichtlich sein):

Code:
document.write("<input type='button' value='weiter' onClick="+test()+">");

Gib den folgenden String aus:
"<input type='button' value='weiter' onClick=ABC>",
aber zuvor rufe test() auf und ersetze im String das "ABC" durch das von der Funktion test zurückgegebene Ergebnis. In Deinem Fall ist das Ergebnis void, d.h. es wird einfach folgendes ausgegeben:
<input type='button' value='weiter' onClick=>

Das ist nicht einmal valides HTML.

Selbstverständlich muss es wie folgt heißen:
Code:
document.write("<input type='button' value='weiter' onClick='test()'>");

Wenn das nicht funktioniert, würde ich mir mal Gedanken machen, ob die Funktion test() überhaupt verfügbar/eingebunden ist.
 
Ich habe das anders gelöst. Aber so wie oben beschrieben hat es nicht geklappt :(
 
Noch so ein document.write Künstler, wie ich bereits eben schrieb: Besser Abstand davon nehmen und DOM-Manipulationen direkt machen.

Zwei weitere Anmerkungen:
a) onClick="+test()" ist selbstverständlich Kappes :p
b) auch sowas besser auslagern, also bspw. mit document.getElementById('buttonId').onclick = test; Das gleiche gilt auch für das Body onload Event.