如何在rangeslider.js(IE8)中动态更改最小值和最大值

RBH*_*RBH 0 javascript internet-explorer

我有一个页面,其中包含三个使用rangeslider.js(andreruffert.github.io/rangeslider.js)的滑块。

我在IE8中动态更改滑块的最小值和最大值时遇到麻烦。在IE9 +和Webkit中,当我在输入标签中动态设置min和max属性时,它可以正常工作。

在IE8中,它只会忽略页面加载后我通过脚本设置的任何最小值和最大值。

任何想法将不胜感激。

小智 6

Rangeslider.js有一个update方法,如果元素的任何属性发生更改,都可以调用该方法。

$element.rangeslider('update', true);
Run Code Online (Sandbox Code Playgroud)

$element.rangeslider('update', true);
Run Code Online (Sandbox Code Playgroud)
var $document = $(document);
var $element = $('input[type=range]');
var $min = $('input[name="min"]');
var $max = $('input[name="max"]');
var $step = $('input[name="step"]');
var output = document.querySelector('output');

// Set initial output value
output.innerHTML = $element[0].value;

// Update output value
$document.on('input', 'input[type="range"]', function() {
  output.innerHTML = this.value;
});

// Initialize rangeslider.js
$element.rangeslider({
  polyfill: false
});

// Example functionality to demonstrate programmatic attribute changes
$document.on('click', '#js-example-change-attributes', function(e) {
  var attributes = {
    min: $min[0].value,
    max: $max[0].value,
    step: $step[0].value
  };
  // update attributes
  $element.attr(attributes);

  // pass updated attributes to rangeslider.js
  $element.rangeslider('update', true);
});
Run Code Online (Sandbox Code Playgroud)
body {
  font-family: sans-serif;
  padding: 30px;
  margin: 0 auto;
  max-width: 400px;
}
h3 {
  color: rgba(0,0,0, .4);
}
output {
  display: block;
  text-align: center;
}
Run Code Online (Sandbox Code Playgroud)