FragePass in lokalen Variablen zu Callback-Funktion
Wie kann eine Callback-Funktion von einer lokalen Variablen behalten, woher sie erstellt wurde?
Einfaches Beispiel
Ich bin ein Video-Player zu schaffen. Es wird Schieberegler haben, um die Sättigung, den Kontrast und den Farbton zu steuern. Wenn der Benutzer mit den Schiebereglern spielt, muss er bestätigen, welcher Schieberegler geändert wurde und welchen Wert er geändert hat. Das Problem ist, dass der Name des Sliders eine lokale Variable aus dem Bereich des Erstellers dieses OnChange-Callbacks ist. Wie kann dieser Rückruf den Namen des Schiebereglers behalten?
HTML
<div id="saturation">
<div class="track"></div>
<div class="knob"></div>
</div>
</div>
<div id="contrast">
<div class="track"></div>
<div class="knob"></div>
</div>
</div>
<div id="hue">
<div class="track"></div>
<div class="knob"></div>
</div>
</div>
JS
var elements = [
'saturation',
'contrast',
'gamma'
];
for(var i = 0; i < sliders.size(); i++) {
new Control.Slider(
$(elements[i]).down('.knob'),
$(elements[i]).down('.track'), {
onChange: function(value) {
// ERROR: elements[i] is undefined
alert(elements[i] + ' has been changed to ' + value);
}
}
}
Dies gab mir einen Syntaxfehler. – JoJo
Ich glaube, das ist die richtige Sache zu tun: onChange: function() { Return-Funktion (Wert) { Alert (Elemente [i] + Wert); } } (elements [i]) – JoJo
Als ich das betrachtete, dachte ich, der Autor sei clever, indem er die Rückmeldung weglasse; Lisp-ähnliche Sprachen geben standardmäßig den letzten Ausdruck zurück. Leider ist Javascript nicht einer von ihnen :( –