javascript - 在范围 slider javascript 内切换大小写

标签 javascript html css

我正在尝试制作一个范围 slider ,如果我使用 slider 选择一个值 - 它会显示一件事,如果我选择另一个值 - 它会显示另一件事。所以我试图用一个开关盒来做到这一点:如果你的值是 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>

最佳答案

您可以将工作事件应用于该元素并移交this。然后您可以获取该值并将其转换为数字,因为 HTML 中输入的所有结果都是一个字符串,如果需要,则需要进行转换。 switch 使用严格比较,如果您获取一个字符串并将该值与一个数字进行比较,您总是得到 false

然后您需要获取文本。最好的方法是获取页面的另一个元素并在那里显示结果。 document.write 仅在页面尚未呈现到最后并且不建议使用时才有效。

var result = document.getElementById("result"),
    output = document.getElementById("demo");

function update(element) {
    var value = +element.value, // convert to number
        text;

    output.innerHTML = value;

    switch (value) {
        case 0:
            text = "Good job";
            break;
        case 30:
            text = "Pretty good";
            break;
        case 60:
            text = "Passed";
            break;
        case 90:
            text = "Passed";
            break;
        default:
           text = "Unknown grade";
    }
    result.innerHTML = text;
}
<input type="range" min="0" max="90" value="0" step="30" class="slider" id="myRange" onchange="update(this)">
<p>Value: <span id="demo"></span></p>
<p id="result"></p>

关于javascript - 在范围 slider javascript 内切换大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55652015/

相关文章:

javascript - 可扩展的谷歌地图覆盖

javascript - 通过javascript更改html内容

javascript - 如何成功地将filemanager集成到tinyMCE中?

javascript - jquery 仅显示下一个具有相同类的 div

javascript - 下载文件: ACCESS DENIED

html - 如果 CDN 失败,如何回退到本地样式表(不是脚本)

javascript - 未捕获的语法错误 : Invalid or unexpected token using anchor tag in for each

javascript - Tab 焦点到 JavaScript 中的单选按钮

html - 为什么 div 不从其父级获取高度属性?

css - 为要包装的元素编写 CSS