我用vanilla JS制作了一个计算器,在运行switch语句后,程序对每种情况都执行不同的操作,只返回第一种情况。
let res = document.getElementById("res")
let sub = document.getElementById("submit")
let sel = document.getElementById("sel")
let opt = sel.options[sel.selectedIndex];
sub.addEventListener("click", () => {
let inp1 = Number(document.getElementById("input1").value)
let inp2 = Number(document.getElementById("input2").value)
switch (opt.value) {
case "+":
res.innerHTML = inp1 + inp2;
break;
case "-":
res.innerHTML = inp1 - inp2;
break;
case "*":
res.innerHTML = inp1 * inp2;
break;
case "/":
res.innerHTML = inp1 / inp2;
break;
default:
res.innerHTML = "Please enter something in all of the empty fields";
}
})
<div>
<input id="input1" class="input w3-round">
<select class="dropdown w3-animate-zoom w3-round" id="sel">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input id="input2" class="input w3-round">
<button id="submit" class="w3-button-small w3-round w3-green">Submit</button>
</div>
<p id="res" class="p"></p>
最佳答案
您从不更新选定的选项,因此它始终引用初始值。
每次单击按钮时都必须更新值。
将该行移到回调函数中。
let res = document.getElementById("res")
let sub = document.getElementById("submit")
let sel = document.getElementById("sel")
// ---
sub.addEventListener("click", ()=>{
// +++
let opt = sel.options[sel.selectedIndex];
// ...
})
关于javascript - JavaScript switch语句仅返回第一种情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57083022/