具有onchange功能的HTML5 Slider

Nec*_*uch 5 javascript html5 slider

我有一个滑块(输入类型范围),它应该在更改值时运行一个函数.然后,该函数应在单独的div容器中显示新值.在函数中发出警报后,我知道该函数没有被调用,但是在谷歌搜索了一个小时并尝试了几种不同的方法之后我就找不到错误了.

这是HTML部分:

<input id="slide" type="range" min="1" max="100" step="1" value="10" onchange="updateSlider(this.value)">

<div id="sliderAmount"></div>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

//Slider
function updateSlider(slideAmount)
{
alert("error");
var sliderDiv = document.getElementById("sliderAmount");
sliderDiv.innerHTML = slideAmount;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Dav*_*ing 17

它工作正常,你只需要确保在渲染元素时定义了javascript函数,f.ex.

<script>
    function updateSlider(slideAmount) {
        var sliderDiv = document.getElementById("sliderAmount");
        sliderDiv.innerHTML = slideAmount;
    }
</script>
<input id="slide" type="range" min="1" max="100" step="1" value="10" onchange="updateSlider(this.value)">
<div id="sliderAmount"></div>?
Run Code Online (Sandbox Code Playgroud)

看到这个演示:http://jsfiddle.net/Mmgxg/

更好的方法是删除内联onchange属性:

<input id="slide" type="range" min="1" max="100" step="1" value="10">
<div id="sliderAmount"></div>
Run Code Online (Sandbox Code Playgroud)

然后在你的javascript中添加监听器:

var slide = document.getElementById('slide'),
    sliderDiv = document.getElementById("sliderAmount");

slide.onchange = function() {
    sliderDiv.innerHTML = this.value;
}?
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/PPBUJ/

  • @RubenMartinezJr.我发现这个问题有同样的问题,我发现使用oninput而不是onchange会在滑块移动时立即触发,至少在当前版本的chrome中 (5认同)
  • 请注意,到 2020 年,建议改为使用 `addEventListener(`input`, evt =&gt; ...)`,因为“on...”事件处理在 2012 年已成为遗留问题,但此后已牢固地成为一种模式避免。另请注意使用“input”而不是“change”事件,因为“input”在您移动滑块时连续触发,而“change”在您放开滑块时触发。 (2认同)