3 回答

TA貢獻1752條經驗 獲得超4個贊
您可以將工作事件應用于元素并移交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>

TA貢獻1825條經驗 獲得超6個贊
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>

TA貢獻1776條經驗 獲得超12個贊
只需少量Javascript修復即可更新您的代碼。試試這個,希望對您有所幫助。謝謝
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
var message = document.getElementById("message");
output.innerHTML = slider.value;
slider.oninput = function() {
output.innerHTML = this.value;
switch (parseInt(this.value)) {
case 0:
messageAppend("Good job");
break;
case 30:
messageAppend("Pretty good");
break;
case 60:
messageAppend("Passed");
break;
case 90:
messageAppend("Passed");
break;
default:
messageAppend("Unknown grade");
}
};
function messageAppend(text) {
message.innerText = text;
}
.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>
<div id="message"></div>
添加回答
舉報