【发布时间】:2017-07-05 07:02:42
【问题描述】:
我有一个带有 2 个(或更多)jQuery 滑块的简单代码:
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>
和 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);
};
}
效果很好。
现在,我想让它变得更好,我想在 for 循环中调用这些函数:
$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);
};
}
jsfiddle 也提供简化代码:
发生的情况是,在更改滑块的值后 i 设置为 2,显然函数 sliderChange 不能正常工作(ID_Sli[i] 是 未定义)。
有什么想法吗?
【问题讨论】:
-
你能给一个适合你的JSFiddle吗,这段代码似乎不起作用!!
-
用简单的 jsfiddle 示例更新了代码。
-
幻灯片:函数(事件,用户界面){警报('#'+ ID_Sli[i]); },在slider函数内部打印ID_Sli[i]的值,它打印#undefined,这意味着Name数组不能从函数内部访问。因此它无法更新输入框。
标签: javascript jquery jquery-ui-slider