老师,不懂为什么这两行不可以
oResult.value = Number(oNum1) +oOperate.value + Number(oNum2);
oResult.innerHTML = Number(oNum1) +oOperate.value + Number(oNum2);
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<input type="text" id="num1" />
<select id="operate">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" id="num2" />
<input type="button" value=" = " id="btn" />
<input type="text" id="result" />
<script>
var oNum1 = document.getElementById("num1");
var oOperate = document.getElementById("operate");
var oNum2 = document.getElementById("num2");
var oBtn = document.getElementById("btn");
var oResult = document.getElementById("result");
oBtn.onclick = function () {
// oResult.value = Number(oNum1) +oOperate.value + Number(oNum2);
// oResult.innerHTML = Number(oNum1) +oOperate.value + Number(oNum2);
}; //不懂上面那两行不可以
//当点击等号的时候
btn.onclick = function () {
//先把num1和num2的值赋给n1和n2
var n1 = Number(oNum1.value);
var n2 = Number(oNum2.value);
//把operate的值赋给o1
var o1 = oOperate.value;
if (o1 == "+") {
result.value = n1 + n2;
} else if (o1 == "-") {
result.value = n1 - n2;
} else if (o1 == "*") {
result.value = n1 * n2;
} else if (o1 == "/") {
result.value = n1 / n2;
} else {
alert("");
}
};
// 用switch再解决一下这个问题
</script>
</body>
</html>
正在回答 回答被采纳积分+1
同学你好,原因如下:
首先,oResult为input文本输入框,需要通过value属性来获取和设置input输入框的内容,而不是innerHTML,所以,以下代码不正确
oResult.innerHTML = Number(oNum1)+oOperate.value+Number(oNum2); //应将innerHTML修改为value
其次,代码中oNum1和oNum2为input元素,不应将input元素转换为数值类型,而应将input元素的输入内容转换为数值类型,前面说了获取input输入框的内容,需要使用value属性,即
oResult.value = Number(oNum1.value) + oOperate.value + Number(oNum2.value);
最后,oOperate.value中的内容实际是字符串类型的+-*/,不会被当做算术运算符来执行算术运算,所以,最终结果是将所有内容拼接成一个字符串,如图
解决方案:eval() 函数可用于计算某个字符串,并执行其中的 JavaScript 代码,如下
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星