Hallo,
var slider = new Array();
var entrys = new Array('RW','RD','RH');
var values = new Array();
values['RW'] = new Array(450,50,800);
values['RD'] = new Array(450,50,800);
values['RH'] = new Array(350,50,600);
Pfui! So macht man das nicht. Das macht man semantisch mit Objects (du benutzt ein Mischmasch, weil du Arrays und »assoziative Arrays« kennst, aber in JavaScript läuft der Hase etwas anders):
~~~javascript
var sliders = {
RW : {
initial : 450,
start : 50,
end : 800
},
usw.
};
Das durchläufst du dann mit einer for-in-Schleife und auf die Werte greifst du als Unterobjekte zu;
for (var name in sliders) {
var currentSlider = sliders[name];
alert(name + "\n"+ currentSlider.initial + "\n" + currentSlider.start + usw.);
}
Das nur zum Stil.
for (var i=0;i<entrys.length;i++){
var dID = entrys[i];
slider[i] = new Slider($(dID+'bar'), $(dID+'but'), {
start: values[dID][1],
end: values[dID][2],
onChange: function(step,dID){
$(dID+'val').setHTML(step);
}
}).setMin(values[dID][0]);}
});
Der onChange-Handler wird im Kontext des Slider-Objektes ausgeführt, also speichern wir die ID doch einfach dort, damit wir im Handler darauf Zugriff haben.
~~~javascript
var changefunc = function (step) {
alert(this.id + "\n" + step);
// Hier geht dann:
$(this.id + "val").setHTML(step);
};
var newSlider = new Slider(
$(dID + 'bar'),
$(dID + 'but'),
{
start : values[dID][1],
end: values[dID][2],
onChange: changefunc
}
);
newSlider.set(values[dID][0]);
newSlider.id = dID;
slider[i] = newSlider;
Das Slider-Objekt hat übrigens noch weitere interessante öffentliche Eigenschaften, darunter element und knob, Referenzen auf die beiden Elementobjekte. Darüber hätte man im Notfall auf die ID rauskriegen können.
P.S. Laut mootools-Doku nimmt der Slider-Konstruktor keine options namens start und end an und es gibt eine set-, aber keine setMin-Methode. Aber vielleicht benutzt du irgendeine Beta- oder angepasste Version...
Mathias