javascript - 在范围滑块javascript中切换大小写
问题描述
我正在尝试制作一个范围滑块,如果我用滑块选择一个值-它将显示一件事,如果我选择另一个值-它将显示另一件事。所以我试图用一个开关盒来做到这一点:如果你的值为 0 - 然后给我看这条消息,如果你的值为 30 - 给我另一条消息。问题是它根本不起作用......在这里我添加了我的代码:
!(https://postimg.cc/Lnd1PhSs)
所以我的 HTML 代码是这样的:
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value;
slider.oninput = function() {
output.innerHTML = this.value;
};
switch (output) {
case 0:
document.write("Good job<br />");
break;
case 30:
document.write("Pretty good<br />");
break;
case 60:
document.write("Passed<br />");
break;
case 90:
document.write("Passed<br />");
break;
default:
document.write("Unknown grade<br />");
}
document.write("Exiting switch block");
.slidecontainer {
width: 100%;
}
.slider {
-webkit-appearance: none;
width: 100%;
height: 5px;
background: grey;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
}
.slider:hover {
opacity: 1;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 25px;
height: 25px;
background: rgb(58, 111, 46);
border-radius: 40px;
}
.slider::-moz-range-thumb {
width: 25px;
height: 25px;
background: rgb(58, 111, 46);
border-radius: 40px;
border: none;
}
<input type="range" min="0" max="90" value="0" step="30" class="slider" id="myRange">
<p>Value: <span id="demo"></span></p>
解决方案
switch 块在您的oninput回调函数之外,因此如果滑块的值发生变化,则不会对其进行评估。此外,document.write()将替换您的整个 html 文档。试试console.log()代替。最后,this.value是 String 类型——在你的 switch 块中,你正在检查整数值。使用parseInt(this.value)将输入转换为数字。
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value;
slider.oninput = function() {
output.innerHTML = this.value;
switch (parseInt(this.value)) {
case 0:
console.log("Good job<br />");
break;
case 30:
console.log("Pretty good<br />");
break;
case 60:
console.log("Passed<br />");
break;
case 90:
console.log("Passed<br />");
break;
default:
console.log("Unknown grade<br />");
}
};
.slidecontainer {
width: 100%;
}
.slider {
-webkit-appearance: none;
width: 100%;
height: 5px;
background: grey;
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
}
.slider:hover {
opacity: 1;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 25px;
height: 25px;
background: rgb(58, 111, 46);
border-radius: 40px;
}
.slider::-moz-range-thumb {
width: 25px;
height: 25px;
background: rgb(58, 111, 46);
border-radius: 40px;
border: none;
}
<input type="range" min="0" max="90" value="0" step="30" class="slider" id="myRange">
<p>Value: <span id="demo"></span></p>
推荐阅读
- sql - JOIN USING 的顺序如何影响结果?
- paw-app - 如何在 Paw 中使用布尔变量?
- excel - 如何在打开文件时自动删除应用的过滤器而不删除过滤器功能
- java - 使用 Drools 7.21 时的布尔值
- python - 使用 pyinstaller 创建可执行文件时 python 的 plyer 库出现问题
- python - 如何修复现有 Pycharm 项目的 pip
- python - 将 JSON 文件写入一个 txt 文件,每个 JSON 数据占一行
- java - 在我的 for 循环中没有看到第二类的方法引用
- vue.js - Vuejs 部署到 IIS 默认网站应用程序
- postgresql - PostgreSQL - 我如何在一天中的某个小时之前求和?