老师,请检查,还有一个疑问,
来源:4-8 编程练习
慕斯6325516
2019-12-12 10:20:31
11.为什么我alert写在下面也显示undefined,写在operate上面也是,但是这个窗口弹出之后结果又显示正确
2.请老师检查代码,是否需要优化的地方
<body>
<div>
<input type="text" id="former" />
<select id="cal">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">x</option>
<option value="divide">÷</option>
</select>
<input type="text" id="later" />
<input type="button" id="btnEqual" value="=" />
<input type="text" id="resultOutput" readonly="true" />
</div>
<script type="text/javascript">
var cal=document.getElementById('cal');
var former=document.getElementById('former');
var later=document.getElementById('later');
var btnEqual=document.getElementById('btnEqual');
var result=document.getElementById('resultOutput');
btnEqual.onclick=function(){
operate[cal[cal.selectedIndex].value](former.value,later.value);
alert(operate[cal[cal.selectedIndex].value](former.value,later.value))
// switch(cal[cal.selectedIndex].value){
// case "add":
// operate.add(former.value,later.value);break;
// case "subtract":
// operate.subtract(former.value,later.value);break;
// case "multiply":
// operate.multiply(former.value,later.value);break;
// case "divide":
// operate.divide(former.value,later.value);break;
//
// }
};
var operate={
add: function (num1, num2){
result.value= +num1 + +num2;
},
subtract: function (num1, num2){
result.value= num1 - num2;
},
multiply: function (num1, num2){
result.value= num1 * num2;
},
divide: function (num1, num2){
result.value= num1 / num2;
}
};
</script>
</body>
1回答
好帮手慕星星
2019-12-12
同学你好,因为operate对象中每个方法没有返回值,是直接赋值的:
所以调用方法之后,弹出的结果是undefined,然后结果已经显示到了result中。代码中alert去掉就好,直接调用每个方法。代码测试结果是正确的,很棒!
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
相似问题