我在一个有几十个滑块的表单上使用 noUiSlider ( http://refreshless.com/nouislider/ )。我认为我可以设置一个类名数组和一个循环,而不是复制/粘贴每个代码。这样可行; 即,它设置了工作滑块。但是,表单还必须在更新时显示滑块的值,这是我无法解决的部分。我知道如何使用静态值但不在循环中...
简化示例:
JavaScript:
var steps = [
'Never',
'Occasionally',
'Frequently',
'Constant'
];
// This array will have many more
var slider_names = [
'slider',
'slider2'
];
var sliders = [];
for (var i = 0; i < slider_names.length; i++) {
sliders.push(document.getElementById(slider_names[i]));
noUiSlider.create(sliders[i], {
start: 0,
connect: 'lower',
step: 1,
range: {
'min': [ 0 ],
'max': [ 3 ]
},
pips: {
mode: 'steps',
density: 100
}
});
sliders[i].noUiSlider.on('update', function(values, handle) {
// ***** Problem line *****
document.getElementById(slider_names[i]+'-value').innerHTML = steps[parseInt(values[handle])];
// ***** Problem line *****
});
}
HTML:
<div id="slider-value"></div>
<div id="slider"></div>
<div id="slider2-value"></div>
<div id="slider2"></div> (etc...)
问题行在上面突出显示......当使用静态值(例如,'slider2-value')时它工作正常,但我似乎无法弄清楚当更新事件触发时如何定位适当的id...... slider_names[i] 显然不会在那里工作。我可能遗漏了一些明显的东西?谢谢!