J'ai un code simple avec 2 (ou plus) curseurs jQuery:curseur jQuery - slide: function (event, ui) dans la boucle for
HTML:
<label for="ST">ST:</label>
<input type="text" id="ST" value="10">
<div id="slider-ST"></div>
<label for="DX">DX:</label>
<input type="text" id="DX" value="10">
<div id="slider-DX"></div>
et JS:
$function(){
$("#slider-ST").slider({
orientation: "horizontal",
range: "min",
value: 10,
slide: function (event, ui) {sliderChange(ui,"#ST");}
});
$("#slider-DX").slider({
orientation: "horizontal",
range: "min",
value: 10,
slide: function (event, ui) {sliderChange(ui,"#DX");}
});
function sliderChange(t, disp)
{
$(disp).val(t.value);
};
}
Cela fonctionne parfaitement bien.
Maintenant, je veux le rendre plus agréable et je voudrais appeler ces fonctions dans une boucle:
$function(){
var ID_Inp = ["#slider-ST", "#slider-DX"];
var ID_Sli = ["#ST", "#DX"];
var i;
for (i=0;i<ID_Inp.length;i++)
{
$(ID_Inp[i]).slider({
orientation: "horizontal",
range: "min",
min: 1,
max: 18,
value: 10,
slide: function (event, ui) {sliderChange(ui,ID_Sli[i]);}
});
};
function sliderChange(t, disp)
{
$(disp).val(t.value);
};
}
Code simplifié également disponible à jsFiddle:
Et ce qui se passe est que i est mis à 2 après avoir changé la valeur du curseur et évidemment fonction sliderChange ne fonctionne pas correctement (ID_Sli [i] est undefined).
Des idées?
Pouvez-vous donner un JSFiddle qui fonctionne pour vous, ce code ne semble pas fonctionner !! –
Mise à jour du code avec des exemples jsfiddle simples. –
diapositive: function (event, ui) {alert ('#' + ID_Sli [i]); }, en imprimant la valeur de ID_Sli [i] dans la fonction de curseur, il imprime #undefined, cela signifie que les tableaux de noms ne sont pas accessibles depuis la fonction interne. Par conséquent, il n'est pas en mesure de mettre à jour la boîte de saisie. –