使用JS实现简易计算器


Posted in Javascript onJune 14, 2021

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>计算器</title>
</head>
<body>
    <div style="text-align: center;">
        <input type="text" id="1" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " >
    <select name="select" id="select">
        <option value="null">请选择</option>
        <option value="0">+</option>
        <option value="1">-</option>
        <option value="2">*</option>
        <option value="3">/</option>
    </select>
    <input type="text" id="2" onkeyup="this.value=this.value.replace(/[^\d]/g,'') ">
    =
    <input type="text" id="3" onkeyup="this.value=this.value.replace(/[^\d]/g,'') "><br><br>
    </div>
    <div style="text-align: center;">
        <input type="button"  id="button"value="计算">
    </div>
    <script>
        
    function accAdd(arg1,arg2){ 
        var r1,r2,m; 
        try{
            r1=arg1.toString().split(".")[1].length
        }catch(e){
            r1=0
        } 
        try{
            r2=arg2.toString().split(".")[1].length
        }catch(e){
            r2=0
        } 
        m=Math.pow(10,Math.max(r1,r2)) 
        return (arg1*m+arg2*m)/m 
        } 
        Number.prototype.add = function (arg){ 
        return accAdd(arg,this); 
        }


    function Subtr(arg1,arg2){
        var r1,r2,m,n;
 
        try{
            r1=arg1.toString().split(".")[1].length
        }catch(e){
            r1=0
        }
 
        try{
            r2=arg2.toString().split(".")[1].length
        }catch(e){
            r2=0
        }
        m=Math.pow(10,Math.max(r1,r2));
 
     // last modify by deeka
     // 动态控制精度长度
        n=(r1>=r2)?r1:r2;
        return ((arg1*m-arg2*m)/m).toFixed(n);
    }
    function accMul(arg1,arg2)  //乘法
    { 
        var m=0,s1=arg1.toString(),s2=arg2.toString(); 
        try{
            m+=s1.split(".")[1].length
        }catch(e){} 
        try{
            m+=s2.split(".")[1].length
        }catch(e){} 
        return Number(s1.replace(".",""))*Number(s2.replace(".","")) / Math.pow(10,m) 
        } 
 
    //给Number类型增加一个mul方法,调用起来更加方便。 
    Number.prototype.mul = function (arg){ 
    return accMul(arg, this); 
    } 

    function accDiv(arg1,arg2){ 
    var t1=0,t2=0,r1,r2; 
    try{
        t1=arg1.toString().split(".")[1].length
    }catch(e){} 
    try{
        t2=arg2.toString().split(".")[1].length
    }catch(e){} 
     with(Math){ 
        r1=Number(arg1.toString().replace(".","")) 
        r2=Number(arg2.toString().replace(".","")) 
        return (r1/r2)*pow(10,t2-t1); 
        } 
    } 
        Number.prototype.div = function (arg){ 
        return accDiv(this, arg); 
    }


        document.getElementById('button').onclick=function(){
            var num1 =document.getElementById('1').value;
            var num2 =document.getElementById('2').value;
            var num3;
            var op =document.getElementById('select').value;
            switch(op){
                case '0':
                    num3= accAdd(num1,num2);
                    break;
                case '1':
                    num3= Subtr(num1,num2) ;
                    break;
                case '2':
                    num3=accMul(num1,num2) ;
                    break;
                case '3':
                    num3=accDiv(num1,num2) ;
                    break;
            }
            document.getElementById('3').value=num3;
        }
       
    </script>

</body>
</html>

效果图:

使用JS实现简易计算器

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

Javascript 相关文章推荐
IE中直接运行显示当前网页中的图片 推荐
Aug 31 Javascript
不到30行JS代码实现Excel表格的方法
Nov 15 Javascript
JSON字符串和对象之间的转换详解
May 26 Javascript
JavaScript 深层克隆对象详解及实例
Nov 03 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
Nov 25 Javascript
jQuery Form表单取值的方法
Jan 11 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
Sep 07 Javascript
React Hooks的深入理解与使用
Nov 12 Javascript
javascript获取元素的计算样式
May 24 Javascript
富文本编辑器vue2-editor实现全屏功能
May 26 Javascript
js获取图片的base64编码并压缩
Dec 05 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
基于PHP与XML的PDF文档生成技术
2006/10/09 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
2008/03/22 Javascript
js 深拷贝函数
2008/12/04 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
如何高效使用Python字典的方法详解
2017/08/31 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
钳工实习自我鉴定
2013/09/19 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
高二学生评语大全
2014/04/25 职场文书
计算机科学技术自荐信
2014/06/12 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
小学家长意见怎么写
2015/06/03 职场文书
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers