The question might suggest that I need onchange
, which is not the case. Compare these two snippets:
var slider = document.getElementById("slider") slider.onchange = function() { var currentVal = slider.value document.querySelector("b").innerText = "The current value is " + currentVal.toString() }
<input type="range" id="slider" min="1" max="10" step="1" , value="4"> <br> <b>The current value is 4</b>
var slider = document.getElementById("slider") slider.onmousemove = function() { var currentVal = slider.value document.querySelector("b").innerText = "The current value is " + currentVal.toString() }
<input type="range" id="slider" min="1" max="10" step="1" , value="4"> <br> <b>The current value is 4</b>
The upper one uses onchange
and only updates once the mouse is released.
The lower one uses onmousemove
and updates every time the mouse gets moved over the slider. However, I don’t think that is the most memory saving method. It also doesn’t change when using the arrow keys unless the mouse is moved over the slider.
Is there a certified or at least better way of doing what the lower one achieves?
Advertisement
Answer
Just use oninput
Event, it will call when user slides on modern browsers.
var slider = document.getElementById("slider") slider. oninput = function() { var currentVal = slider.value document.querySelector("b").innerText = "The current value is " + currentVal.toString() }
<input type="range" id="slider" min="1" max="10" step="1" , value="4"> <br> <b>The current value is 4</b>