使用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 相关文章推荐
js 学习笔记(三)
Dec 29 Javascript
JavaScript 原型与继承说明
Jun 09 Javascript
js中onload与onunload的使用示例
Aug 25 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
详解js实现线段交点的三种算法
Aug 09 Javascript
jQuery实现限制文本框的输入长度
Jan 11 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 Javascript
详解如何使用webpack+es6开发angular1.x
Aug 16 Javascript
jQuery zTree插件快速实现目录树
Aug 16 jQuery
JavaScript异步操作中串行和并行
Nov 20 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
JavaScript如何操作css
2020/10/24 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
用python写测试数据文件过程解析
2019/09/25 Python
Python numpy数组转置与轴变换
2019/11/15 Python
python drf各类组件的用法和作用
2021/01/12 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
专营店会计助理岗位职责
2013/11/29 职场文书
聊城大学毕业生自荐书
2014/02/01 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
房产公证委托书范本
2014/09/20 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
同学聚会邀请函
2015/01/30 职场文书
鼋头渚导游词
2015/02/05 职场文书
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle