使用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 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
Javascript条件判断使用小技巧总结
Sep 08 Javascript
使用firebug进行调试javascript的示例
Dec 16 Javascript
js中浮点型运算BUG的解决方法说明
Jan 06 Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
Angular 路由route实例代码
Jul 12 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
Jul 31 Javascript
vue把输入框的内容添加到页面的实例讲解
Nov 11 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 Javascript
在js中修改html body的样式
Nov 11 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
PHP 已经成熟
2006/12/04 PHP
php类的定义与继承用法实例
2015/07/07 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
json简单介绍
2008/06/10 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
python使用range函数计算一组数和的方法
2015/05/07 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
详解Django中间件执行顺序
2018/07/16 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
python2和python3哪个使用率高
2020/06/23 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
C语言开发工程师测试题
2016/12/20 面试题
精彩的大学生自我评价
2013/11/17 职场文书
入党自我评价优缺点
2014/01/25 职场文书
地球一小时宣传标语
2014/06/24 职场文书
生活小常识广播稿
2015/08/19 职场文书
趣味运动会标语口号
2015/12/26 职场文书
PHP中->和=>的意思
2021/03/31 PHP
python中print格式化输出的问题
2021/04/16 Python
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS