Ich habe diesen Code:
%Vor% wo das Ereignis gehört wird, aber es gibt 3
-Elemente und die Warnung druckt immer 3
auf eines der Elemente (es berücksichtigt nicht den Index),
% s% items[i]
sollte die Aufgabe nicht als Closure erledigen?
Danke!
Das ist ein klassisches Closure-Problem: Sie müssen eine neue Funktion erstellen, die nicht an die Variable 'i' gebunden ist, sondern an ihren Wert zum Zeitpunkt der Bindung:
%Vor% Nein, das dritte Argument von addEventListener
ist useCapture
eins. Weitere Informationen finden Sie unter MDN .
Aber Sie können verwenden:
%Vor%oder
%Vor% Der erste erstellt einen neuen Event-Handler für jedes Element, so dass mehr Speicher benötigt wird. Der zweite verwendet den gleichen Ereignis-Listener, verwendet aber indexOf
, also ist es langsamer.
Tags und Links javascript closures for-loop addeventlistener