使用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创建和操作表格的函数集合
May 07 Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 Javascript
js实现的简单radio背景颜色选择器代码
Aug 18 Javascript
给before和after伪元素设置js效果的方法
Dec 04 Javascript
全面解析Bootstrap表单样式的使用
Sep 09 Javascript
JS实现微信弹出搜索框 多条件查询功能
Dec 13 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
Feb 15 Javascript
AngularJS执行流程详解
Feb 17 Javascript
详解vue组件通信的三种方式
Jun 30 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
Aug 18 Javascript
关于jquery中attr()和prop()方法的区别
May 28 jQuery
Vue.js实现大屏数字滚动翻转效果
Nov 29 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
PHP 模板高级篇总结
2006/12/21 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
python如何查看微信消息撤回
2018/11/27 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
Python通过Pillow实现图片对比
2020/04/29 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
亲子读书活动方案
2014/02/22 职场文书
教师节促销方案
2014/03/22 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
先进典型事迹材料
2014/12/29 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
工作简历自我评价
2015/03/11 职场文书
小平您好观后感
2015/06/09 职场文书
庆七一活动简报
2015/07/20 职场文书
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript