JS Closure - dynamisch 20 Buttons in Schleife mit click event erzeugen

  • Hallo, ich versuche mich auf eine Klausur vorzubereiten, bei manchen der Aufgaben habe ich noch Probleme. Leider sind die Übungen und Vorträge zu diesem Modul sehr schlecht. Da habe ich gedacht, dass ich mich vielleicht hier einfach mal an ein paar Pros wende.


    Jetzt mal eine der besagten Aufgaben;

    Aufgabe (JavaScript-Closure): Erstellen Sie dynamisch zwanzig Buttons, denen Sie beim Erzeugen in einer Schleife einen Eventhandler für das Click-Event zuweisen, der beim Anklicken u.a. die Zählvariable zur Erstellungszeit ausgibt, z.B. mit folgendem Text: „Button 12 wurde gedrückt.“


    Hmm, also wie gesagt ich steh da etwas auf dem Schlauch.

    würde jetzt sowas in eine for schleife mit i<20 etc. schreiben:

    document.getElementById('add').innerHTML='<input type = "button" onclick="funk()">Button</button>';


    Hätte da jemand eine Lösung parat?



    Danke schonmal.

  • Moin,


    Du kannst diese 20 Buttons mit der for-Schleife erstellen. Diesen 20 Buttons gibst du dann die gleiche Klasse aber eine andere Value. Als value kannst du die Variable benutzen die in der for-Schleife hochgezählt wird. Danach selektierst du alle Buttons mittels dem Class Name. Führst auf diese nochmals eine for-Schleife aus in der du jedem Button den Click-Event gibst und dann in der function sagt’s, dass einfach die Value des geklickten Buttons ausgegeben werden soll. Die Value des geklickten Buttons erhält du mit this.value.


    Grüße,

    Stef

  • Ich habe eben es mal getestet.


    Eines finde ich sehr merkwürdig. Nämlich das trotz for schleife nur 1 button ausgegeben wird. Das verstehe ich nicht.

    Eigentlich sollten dort doch 20 Buttons ausgegeben werden.


    Kann mir jemand sagen, warum das so ist?


    Mein Code lautet:

    HTML
    <div id="buttonsOutput">
                
    </div>
    <div id="ausgabe">
                
    </div>
  • Ich ging davon aus, dass da dann 20 Ausgaben erfolgen. So funktioniert doch eine for-schleife?


    Ich denke es hat nicht funktioniert, weil in jedem Durchlauf der vorige Button ja überschrieben wird? Ich habe es auch bereits mit einem Array versucht aber da wurde auch der letzte Button nur angezeigt.


    Vielen Dank für das Beispiel. Append sorgt dafür, dass in jedem Durchlauf ja der Button am vorigen angehongen wird.


    Ich habe es nun wie folgt hinbekommen:


  • Ich glaube auch eher, dass mit Erstellen create gefordert ist, anstatt über innerHTML.

    Man hätte jetzt nicht gleich wieder eine komplette Lösung zeigen müssen, aber der Ansatz sieht gut aus.

  • Man hätte jetzt nicht gleich wieder eine komplette Lösung zeigen müssen, aber der Ansatz sieht gut aus.

    Ja da hast du recht.


    Ich fand es eben sehr interessant und wollte es gleich mal austesten.


    Man darf ja 2 Fertige Lösungen pro 6 Themen Posten.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!