Event kann nicht an addEventListener übergeben werden: Schließungsproblem

8

Dieser macht mich verrückt ... Ich habe eine Schleife, die einem SVG-Objekt einen Ereignis-Listener hinzufügt. Das Objekt ist der Argumentation halber ein kleiner Kreis, und ich muss Mouseover- und Mouseout-Ereignisse für jeden der 10 Kreise hinzufügen.

Mein erstes Problem ist die Standard-Closure-Scope-Sache - da alle Listener in derselben Schleife hinzugefügt werden, sehen sie alle denselben ungültigen Wert der Loop-Variablen. Ich kann das beheben, denke ich, aber das zweite Problem ist, dass ich "Ereignis" an die Zuhörer weitergeben muss, und ich kann keine Möglichkeit finden, diese beiden Probleme gleichzeitig zu beheben.

Ich habe verschiedene Versionen davon ausprobiert:

%Vor%

Diese spezielle Version gibt mir "Ereignis ist nicht definiert". popup_on ist der echte Handler und muss event und den aktuellen Wert von month erhalten. Irgendeine Idee, wie ich das machen sollte? Danke.

    
EML 03.01.2012, 15:24
quelle

1 Antwort

15

Das Ereignis wird automatisch an Ihre Funktion übergeben - machen Sie es als erstes Argument für die Funktion, die Sie an addEventListener übergeben. Außerdem ist false der Standardwert für den Erfassungsparameter.

%Vor%

Auch, ist es in Ordnung, wenn foo in Ihrem Event Callback geschlossen ist? Wenn nicht, könntest du das gleiche tun

%Vor%

Und wenn all diese lokalen Variablen nervig werden, kannst du sie zu Parametern machen, um die Dinge etwas aufgeräumter zu machen.

%Vor%     
Adam Rackis 03.01.2012, 15:26
quelle