老师,请检查,还有一个疑问,

来源:4-8 编程练习

慕斯6325516

2019-12-12 10:20:31


1http://img.mukewang.com/climg/5df1a324099dc43615160321.jpghttp://img.mukewang.com/climg/5df1a34909f6863e11600178.jpg1.为什么我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对象中每个方法没有返回值,是直接赋值的:

http://img.mukewang.com/climg/5df1d362090b289905130363.jpg

所以调用方法之后,弹出的结果是undefined,然后结果已经显示到了result中。代码中alert去掉就好,直接调用每个方法。代码测试结果是正确的,很棒!
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 14456 问题

查看课程