如何从输入范围中检索并显示滑块值?
我正在使用Meteor并且更喜欢javascript代码。
<input id="slider" type="range" min="50" max="100" step="10" oninput="sliderChange(this.value)">
<output id="sliderVal"> </output>
的javascript;
function sliderChange(val) {
document.getElementById('sliderVal').innerHTML = val;
}
答案 0 :(得分:9)
引用http://www.w3schools.com/jsref/event_oninput.asp后 看来你可以在 oninput 的更改事件上执行一个方法。
以下代码检索并显示页面上的数字。
<template name="myTemplate>
<input id="slider" type="range" min="50" max="100" step="10" value="50">
<output id="output"></output>
</template>
client.js
Template.myTemplate.rendered = function(){
document.getElementById("slider").oninput = function() {
myFunction()
};
}
function myFunction() {
var val = document.getElementById("slider").value //gets the oninput value
document.getElementById('output').innerHTML = val //displays this value to the html page
console.log(val)
}
THE METEOR WAY:此外,您可以使用change
eventType并根据需要进行映射。这在输入改变状态时有效。
Template.yourTemplate.events({
'change input[type=range]': function(event){
var sliderValue = event.currentTarget.value
Session.set('sliderValueIs', sliderValue)
//then you can get this session and return it in a helper to display on your page
}
})
答案 1 :(得分:2)
RE:拖动HTML输入元素时连续更改Session var:
如果您监听change
事件,该功能将仅在释放鼠标时运行。这意味着它在拖动时不会运行。
如果您收听input
事件,该功能即使在拖动时也会运行。
THE METEOR WAY :
Template.yourTemplate.events({
'input input[type=range]': function(event){
var sliderValue = event.currentTarget.value
Session.set('sliderValueIs', sliderValue)
//The Session var will be set as you drag the slider across its range of values.
//later, you can get this session and return it in a helper to display on your page
}
})
答案 2 :(得分:1)
如评论中所述,您有两个具有相同ID的元素,ID必须是唯一的。解决之后,您可以获取并设置滑块的值,如:
function sliderChange(val) {
document.getElementById('output').innerHTML = val; // get
}
document.getElementById('slider').value = 50; // set
<强> jsFiddle example 强>
上面的示例将滑块设置为50,然后在滑块更改时更新输出元素。