我有一个范围输入,如下所示:
<input type="range" value="5" name="mySlider" min="1" max="5"/>
默认值为5,它从1到5.我想在侧面添加文本,这取决于滑块当前所处的位置。我不太熟悉Javascript,我的最佳尝试不会产生适当的结果:
<input type="range" onChange="updateSlider();" value="5" id="slide" name="mySlider" min="1" max="5"/>
<span id="sliderChange"></span>
function updateSlider() {
var value = $("#slide").val();
if (value == 1) {
$("#sliderChange").text("One");
} elseif (value == 2) {
$("#sliderChange").text("Two");
} elseif (value == 3) {
$("#sliderChange").text("Three");
} elseif (value == 4) {
$("#sliderChange").text("Four");
} else {
$("#sliderChange").text("Five");
}
}
我做错了什么?
此外,还有一些不相关的东西:我个人从90年代末以来就没有看过范围输入。这些仍然是一件事吗?
答案 0 :(得分:1)
您的代码可以重写为(使用mousemove
事件实例change
事件并使用不引人注目的javascript)
<强> HTML 强>
<input type="range" value="5" id="slide" name="mySlider" min="1" max="5" />
<span id="sliderChange"></span>
Javascript
$(function () {
function updateSlider() {
var value = $("#slide").val();
if (value == 1) {
$("#sliderChange").text("One");
}
else if (value == 2) {
$("#sliderChange").text("Two");
}
else if (value == 3) {
$("#sliderChange").text("Three");
}
else if (value == 4) {
$("#sliderChange").text("Four");
}
else {
$("#sliderChange").text("Five");
}
}
$('#slide').mousemove(updateSlider);
});
您也可以使用switch
语句代替if/else
答案 1 :(得分:1)
答案 2 :(得分:1)
错误是写elseif
而不是else if
,但同样,switch
语句可能更合适和可读。
使用新的Web标准和语义HTML,我们不鼓励在*绑定和样式信息(样式属性)上使用内联,JS,HTML和CSS应该是自包含的。
看到你已经使用了jQuery,你可以使用jQuery change
和input
事件来分离JS和HTML。
$(document).ready(function () {
$("#slide").on( "change input", function () {
var value = $(this).val();
if (value == 1) {
$("#sliderChange").text("One");
}
else if (value == 2) {
$("#sliderChange").text("Two");
}
else if (value == 3) {
$("#sliderChange").text("Three");
}
else if (value == 4) {
$("#sliderChange").text("Four");
}
else {
$("#sliderChange").text("Five");
}
});
});
您需要input
,因为change
仅在鼠标重新发布时触发,但IE仅支持change
,因此您最好同时使用它们。