使用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 相关文章推荐
accesskey 提交
Jun 26 Javascript
javascript this用法小结
Dec 19 Javascript
zTree插件之多选下拉菜单实例代码
Nov 06 Javascript
JavaScript中创建对象和继承示例解读
Feb 12 Javascript
jQuery获取对象简单实现方法小结
Oct 30 Javascript
JavaScript中5种调用函数的方法
Mar 12 Javascript
第四章之BootStrap表单与图片
Apr 25 Javascript
前端面试题及答案整理(二)
Aug 26 Javascript
jQuery中show与hide方法用法示例
Sep 16 Javascript
vue-router项目实战总结篇
Feb 11 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
May 25 Javascript
浅谈React Event实现原理
Sep 20 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
坏狼php学习 计数器实例代码
2008/06/15 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
accesskey 提交
2006/06/26 Javascript
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
vue中轮训器的使用
2019/01/27 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
python字符串替换示例
2014/04/24 Python
深入理解Python对Json的解析
2017/02/14 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
机电专业毕业生求职信
2014/07/01 职场文书
公务员个人总结
2015/02/12 职场文书
幼师小班个人总结
2015/02/12 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
Java中的Kotlin 内部类原理
2022/06/16 Java/Android