JavaScript开关语句只返回第一种情况
我正在用vanilla JS制作一个计算器,在运行switch语句对每种情况执行不同的操作之后,程序只返回第一种情况JavaScript开关语句只返回第一种情况,javascript,html,dom,Javascript,Html,Dom,我正在用vanilla JS制作一个计算器,在运行switch语句对每种情况执行不同的操作之后,程序只返回第一种情况 let res=document.getElementById(“res”) let sub=document.getElementById(“提交”) 让sel=document.getElementById(“sel”) let opt=sel.options[sel.selectedIndex]; sub.addEventListener(“单击”,()=>{ 设inp1
let res=document.getElementById(“res”)
let sub=document.getElementById(“提交”)
让sel=document.getElementById(“sel”)
let opt=sel.options[sel.selectedIndex];
sub.addEventListener(“单击”,()=>{
设inp1=Number(document.getElementById(“input1”).value)
设inp2=Number(document.getElementById(“input2”).value)
开关(选择值){
格“+”:
res.innerHTML=inp1+inp2;
打破
案例“-”:
res.innerHTML=inp1-inp2;
打破
案例“*”:
res.innerHTML=inp1*inp2;
打破
案例“/:
res.innerHTML=inp1/inp2;
打破
违约:
res.innerHTML=“请在所有空白字段中输入内容”;
}
})
+
-
*
/
提交
您从不更新所选选项,因此它总是指初始值。
每次单击按钮时都必须更新该值
在回调函数中移动该行
let res=document.getElementById(“res”)
let sub=document.getElementById(“提交”)
让sel=document.getElementById(“sel”)
// ---
sub.addEventListener(“单击”,()=>{
// +++
让opt=sel.options[sel.selectedIndex];
// ...
})
如果您需要在其他地方使用opt
,您可以添加另一个侦听器并保留您拥有的内容:
sel.addEventListener('change', () => {
opt = sel.options[sel.selectedIndex];
});
这将允许
opt
在您的sub之外被引用。单击listener。您根本不需要opt
。使用select的值,而不是在加载时获取选定选项的值<代码>选择值
将在每次更改时显示所选选项的值
简单地说,就是改变
switch (opt.value)
到
以下是更新的代码片段:
let res=document.getElementById(“res”)
let sub=document.getElementById(“提交”)
让sel=document.getElementById(“sel”)
sub.addEventListener(“单击”,()=>{
设inp1=Number(document.getElementById(“input1”).value)
设inp2=Number(document.getElementById(“input2”).value)
开关(sel.value){/您正在使用所选索引,如果您使用console.log sel值,您将看到您有完整的代码行,selectedIndex将返回第一个索引。
只是不要使用selectedIndex,而是使用
let res = document.getElementById("res");
let sub = document.getElementById("submit");
let sel = document.getElementById("sel");
sub.addEventListener("click", () => {
let inp1 = Number(document.getElementById("input1").value)
let inp2 = Number(document.getElementById("input2").value)
console.log(sel.value);
switch(sel.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";
}
})
此代码将解决您的问题:)您需要在单击侦听器中移动行让opt=sel.options[sel.selectedIndex];
,否则它在initl加载后不会更新可能重复的
let res = document.getElementById("res");
let sub = document.getElementById("submit");
let sel = document.getElementById("sel");
sub.addEventListener("click", () => {
let inp1 = Number(document.getElementById("input1").value)
let inp2 = Number(document.getElementById("input2").value)
console.log(sel.value);
switch(sel.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";
}