Hallo ich habe folgende Probleme bei Aufgabe 4.2:
Problem 1
Ich habe auf meine div Container welche meine Hand darstellen Event Listener gesetzt.
handDivs[0].addEventListener("click", function(): void { ablegen(0); }); handDivs[1].addEventListener("click", function(): void { ablegen(1); }); handDivs[2].addEventListener("click", function(): void { ablegen(2); }); handDivs[3].addEventListener("click", function(): void { ablegen(3); }); handDivs[4].addEventListener("click", function(): void { ablegen(4); });
Diese Lösung mit einer anonymen Funktion welche lediglich die ablegen Funktion mit der entsprechenden Zahl aufruft funktioniert auch.
Wenn man es jedoch so schreibt:
handDivs[0].addEventListener("click", ablegen(0));
Gibt er folgende Fehlermeldung aus:
- Argument of type 'void' is not assignable to parameter of type 'EventListener | EventListenerObject'.
Type 'void' is not assignable to type 'EventListenerObject'.
Die Funktion ablegen ist natürlich vom Typ "void" da sie nur Dinge ausführt und nicht zurückgibt
Gibt es einen Weg die Übergabe der number zu erzwingen ?
Problem 2
Ebenfalls könnte man anstatt die Event Listener manuell anzulegen diese mithilfe einer for Schleife anlegen.
for (var i: number = 0; i < handDivs.length; i++) { handDivs[i].addEventListener("click", ablegen); }
Hier müsste man der Funktion "ablegen()" jeweils den Wert von i übergeben. Der i Wer muss jedoch dem i Wert entsprechen welcher zum Zeitpunkt des Hinzufügens des Event Listeners vorhanden war.
Gibt es hier irgendeine Möglichkeit i zu einem konkreten Zeitpunkt mit einem bestimmten Event Listener zu verbinden ?
Vollständiger Code
Grüße
Dominik