使用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 相关文章推荐
学习ExtJS fit布局使用说明
Oct 08 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
微信小程序动态的加载数据实例代码
Apr 14 Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
推荐10款扩展Web表单的JS插件
Dec 25 Javascript
Vue中this.$router.push参数获取方法
Feb 27 Javascript
理理Vue细节(推荐)
Apr 16 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
E路文章系统PHP
2006/12/11 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
php常用表单验证类用法实例
2015/06/18 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
javascript动态修改Li节点值的方法
2015/01/20 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
详解Python中的条件判断语句
2015/05/14 Python
Python实现的Excel文件读写类
2015/07/30 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
Python判断telnet通不通的实例
2019/01/26 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
Python发送邮件实现基础解析
2020/08/14 Python
英国办公用品商店:Office Outlet
2018/04/04 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
计生工作先进事迹
2014/08/15 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android