首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RangeSlider显示多个输出

RangeSlider显示多个输出
EN

Stack Overflow用户
提问于 2018-09-25 16:25:38
回答 2查看 1.2K关注 0票数 1

我设法得到一个输出,但我希望在用户幻灯片中显示多个输出。我怎样才能做到这一点?

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

JSFiddle演示

代码语言:javascript
复制
$('input[type="range"]').rangeslider({polyfill: false});
$('#range').on("input", function() {
$('.output1').val("$"+this.value);
}).trigger("change");
代码语言:javascript
复制
output {
  display: block;
}
代码语言:javascript
复制
<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>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-25 16:31:38

只需在更改output时更新所有range

代码语言:javascript
复制
$('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");

代码片段:

代码语言:javascript
复制
$('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");
代码语言:javascript
复制
output {
  display: block;
}
代码语言:javascript
复制
<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>

票数 2
EN

Stack Overflow用户

发布于 2018-09-25 16:36:27

代码语言:javascript
复制
$('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的。

只要所有的“输出”保持相同的表示法和格式,这个解决方案是通用的。

小提琴:https://jsfiddle.net/jadckr71/6/

注意:许多"$“前面的一元操作符+是将变量转换为一个数字,这样就不会有任何风险--它将是一个字符串,并将以某种方式连接起来。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52502757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档