经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
使用JS实现简易计算器
来源:jb51  时间:2021/6/15 9:23:14  对本文有异议

使用JS完成简易计算器,供大家参考,具体内容如下

要求:输入的值只能是数字,使用正则表达式
onchange():值改变时执行事件
onblur():鼠标移出时执行事件

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>计算器</title>
  8. </head>
  9. <body>
  10. <div style="text-align: center;">
  11. <input type="text" id="1" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " >
  12. <select name="select" id="select">
  13. <option value="null">请选择</option>
  14. <option value="0">+</option>
  15. <option value="1">-</option>
  16. <option value="2">*</option>
  17. <option value="3">/</option>
  18. </select>
  19. <input type="text" id="2" onkeyup="this.value=this.value.replace(/[^\d]/g,'') ">
  20. =
  21. <input type="text" id="3" onkeyup="this.value=this.value.replace(/[^\d]/g,'') "><br><br>
  22. </div>
  23. <div style="text-align: center;">
  24. <input type="button" id="button"value="计算">
  25. </div>
  26. <script>
  27. function accAdd(arg1,arg2){
  28. var r1,r2,m;
  29. try{
  30. r1=arg1.toString().split(".")[1].length
  31. }catch(e){
  32. r1=0
  33. }
  34. try{
  35. r2=arg2.toString().split(".")[1].length
  36. }catch(e){
  37. r2=0
  38. }
  39. m=Math.pow(10,Math.max(r1,r2))
  40. return (arg1*m+arg2*m)/m
  41. }
  42. Number.prototype.add = function (arg){
  43. return accAdd(arg,this);
  44. }
  45.  
  46.  
  47. function Subtr(arg1,arg2){
  48. var r1,r2,m,n;
  49. try{
  50. r1=arg1.toString().split(".")[1].length
  51. }catch(e){
  52. r1=0
  53. }
  54. try{
  55. r2=arg2.toString().split(".")[1].length
  56. }catch(e){
  57. r2=0
  58. }
  59. m=Math.pow(10,Math.max(r1,r2));
  60. // last modify by deeka
  61. // 动态控制精度长度
  62. n=(r1>=r2)?r1:r2;
  63. return ((arg1*m-arg2*m)/m).toFixed(n);
  64. }
  65. function accMul(arg1,arg2) //乘法
  66. {
  67. var m=0,s1=arg1.toString(),s2=arg2.toString();
  68. try{
  69. m+=s1.split(".")[1].length
  70. }catch(e){}
  71. try{
  72. m+=s2.split(".")[1].length
  73. }catch(e){}
  74. return Number(s1.replace(".",""))*Number(s2.replace(".","")) / Math.pow(10,m)
  75. }
  76. //给Number类型增加一个mul方法,调用起来更加方便。
  77. Number.prototype.mul = function (arg){
  78. return accMul(arg, this);
  79. }
  80.  
  81. function accDiv(arg1,arg2){
  82. var t1=0,t2=0,r1,r2;
  83. try{
  84. t1=arg1.toString().split(".")[1].length
  85. }catch(e){}
  86. try{
  87. t2=arg2.toString().split(".")[1].length
  88. }catch(e){}
  89. with(Math){
  90. r1=Number(arg1.toString().replace(".",""))
  91. r2=Number(arg2.toString().replace(".",""))
  92. return (r1/r2)*pow(10,t2-t1);
  93. }
  94. }
  95. Number.prototype.div = function (arg){
  96. return accDiv(this, arg);
  97. }
  98.  
  99.  
  100. document.getElementById('button').onclick=function(){
  101. var num1 =document.getElementById('1').value;
  102. var num2 =document.getElementById('2').value;
  103. var num3;
  104. var op =document.getElementById('select').value;
  105. switch(op){
  106. case '0':
  107. num3= accAdd(num1,num2);
  108. break;
  109. case '1':
  110. num3= Subtr(num1,num2) ;
  111. break;
  112. case '2':
  113. num3=accMul(num1,num2) ;
  114. break;
  115. case '3':
  116. num3=accDiv(num1,num2) ;
  117. break;
  118. }
  119. document.getElementById('3').value=num3;
  120. }
  121. </script>
  122.  
  123. </body>
  124. </html>

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号