RangeSlider 显示多个输出

RangeSlider to show multiple output

我设法得到一个输出,但我想在用户滑动时显示多个输出。我怎样才能做到这一点?

每个输出都有不同的值,例如 1x、1.2x、1.5x、1.3x 和 1.75x

JSFiddle Demo

$('input[type="range"]').rangeslider({polyfill: false});
$('#range').on("input", function() {
$('.output1').val("$"+this.value);
}).trigger("change");
output {
  display: block;
}
<link href="https://rangeslider.js.org/assets/rangeslider.js/dist/rangeslider.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rangeslider.js.org/assets/rangeslider.js/dist/rangeslider.min.js"></script>
<input type="range"  name="range" id="range" value="100" step="25" min="1" max="1100">
    <br />
    <output class="output1">100</output>
    <output class="output2">120</output>
    <output class="output3">150</output>
    <output class="output4">130</output>
    <output class="output5">175</output>

range 发生变化时更新所有 output 值:

$('input[type="range"]').rangeslider({polyfill: false});
$('#range').on("input", function() {
$('.output1').val("$"+parseFloat(this.value*1).toFixed(2));
$('.output2').val("$"+parseFloat(this.value*1.2).toFixed(2));
$('.output3').val("$"+parseFloat(this.value*1.3).toFixed(2));
$('.output4').val("$"+parseFloat(this.value*1.5).toFixed(2));
$('.output5').val("$"+parseFloat(this.value*1.75).toFixed(2));
}).trigger("change");

代码片段:

$('input[type="range"]').rangeslider({polyfill: false});
$('#range').on("input", function() {
$('.output1').val("$"+parseFloat(this.value*1).toFixed(2));
$('.output2').val("$"+parseFloat(this.value*1.2).toFixed(2));
$('.output3').val("$"+parseFloat(this.value*1.3).toFixed(2));
$('.output4').val("$"+parseFloat(this.value*1.5).toFixed(2));
$('.output5').val("$"+parseFloat(this.value*1.75).toFixed(2));
}).trigger("change");
output {
  display: block;
}
<link href="https://rangeslider.js.org/assets/rangeslider.js/dist/rangeslider.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rangeslider.js.org/assets/rangeslider.js/dist/rangeslider.min.js"></script>
<input type="range"  name="range" id="range" value="100" step="25" min="1" max="1100">
    <br />
    <output class="output1">100</output>
    <output class="output2">120</output>
    <output class="output3">150</output>
    <output class="output4">130</output>
    <output class="output5">175</output>

$('input[type="range"]').rangeslider({polyfill: false});

var _multipliers = [
    1,2,3,4,5
].map(function(i){
    return (+$('.output'+i).val() / 100);
});

$('#range').on("input", function() {
  var _value = +this.value;
  [1,2,3,4,5].forEach(function(i){
    $('.output'+i).val("$"+ ((1 + _multipliers[i-1]) * _value).toFixed(2));
  });

}).trigger("change");

对于这种情况,您可以通过最初从地图中获取值来预先计算乘数。 简而言之,使用 .map,您将获得所有初始值并将它们除以 100,因此您将得到乘数(100 -> 1、120 -> 1.2.. 等等)。

之后,您重复相同的过程来获取值,通过访问 _multipliers[i-1],因为索引是从 0 开始的。

只要所有 "outputs" 保持相同的符号和格式,此解决方案就很通用。

Fiddle: https://jsfiddle.net/jadckr71/6/

注意:许多“$”之前的一元运算符 + 是将变量转换为数字,这样就没有风险,它会成为一个字符串,并且会以某种方式连接起来。