使用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 相关文章推荐
基于Asp.net与Javascript控制的日期控件
May 22 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
Jun 27 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
JavaScript取得键盘按下方向键是哪个的方法
Aug 04 Javascript
详谈javascript异步编程
Feb 21 Javascript
基于javascript实现页面加载loading效果
Sep 15 Javascript
非常实用的js验证框架实现源码 附原理方法
Jun 08 Javascript
原生js实现放大镜
Feb 20 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
Jun 22 Javascript
Node.js readline模块与util模块的使用
Mar 01 Javascript
详解vue的双向绑定原理及实现
May 05 Javascript
js实现表格单列按字母排序
Aug 12 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
PHP session常见问题集锦及解决办法总结
2007/03/18 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
Js四则运算函数代码
2012/07/21 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
Python进阶之递归函数的用法及其示例
2018/01/31 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
Python List cmp()知识点总结
2019/02/18 Python
Python实现时间序列可视化的方法
2019/08/06 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
django框架F&amp;Q 聚合与分组操作示例
2019/12/12 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
信息技术培训感言
2014/03/06 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
法制宣传教育方案
2014/05/09 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
python Django框架快速入门教程(后台管理)
2021/07/21 Python
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle