res = 0
if(oper == "+"){ res = num1 + num2 } ...
document.getElementById("res").value = res
變量 res 未用 var/let/const 聲明,成為全局變量。頁面中存在 <input id="res">,IE 下全局變量 res 被 DOM 元素同名覆蓋,導致賦值失效、計算結果異常。
function jiSuan(){
var num1 = parseFloat(document.getElementById("num1").value) || 0;
var num2 = parseFloat(document.getElementById("num2").value) || 0;
var oper = document.getElementById("oper").value;
var res = 0; // 關鍵:局部聲明
switch(oper){
case "+": res = num1 + num2; break;
case "-": res = num1 - num2; break;
case "*": res = num1 * num2; break;
case "/": res = num2 !== 0 ? num1 / num2 : "除數不能為零"; break;
case "%": res = num1 % num2; break;
default: res = "無法識別運算符";
}
document.getElementById("res").value = res;
}
"use strict";,未聲明變量直接拋錯。parseFloat + || 0 防御非數字輸入。addEventListener('click', jiSuan) 替換內聯 onclick。