使用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 相关文章推荐
获取JavaScript用户自定义类的类名称的代码
Mar 08 Javascript
XRegExp 0.2: Now With Named Capture
Nov 30 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
Jul 22 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
详解JavaScript中数组的相关知识
Jul 29 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Dec 14 Javascript
基于Bootstrap框架实现图片切换
Mar 10 Javascript
自制简易打赏功能的实例
Sep 02 Javascript
微信小程序录音与播放录音功能
Dec 25 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
Aug 31 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
根据中文裁减字符串函数的php代码
2013/12/03 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
python取代netcat过程分析
2018/02/10 Python
Python向excel中写入数据的方法
2019/05/05 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
测量实习生自我鉴定
2013/09/19 职场文书
毕业学生推荐信
2013/12/01 职场文书
网页美工求职信
2014/02/15 职场文书
保密普查工作实施方案
2014/02/25 职场文书
工程承诺书怎么写
2014/05/24 职场文书
薪资证明范本
2015/06/19 职场文书
换届选举主持词
2015/07/03 职场文书
《七月的天山》教学反思
2016/02/19 职场文书