使用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 相关文章推荐
jquery遍历select元素(实例讲解)
Dec 31 Javascript
jquery事件重复绑定的快速解决方法
Jan 03 Javascript
jQuery移动端图片上传组件
Jun 12 Javascript
JS实现超简单的汉字转拼音功能示例
Dec 22 Javascript
seajs下require书写约定实例分析
May 16 Javascript
微信小程序表单弹窗实例
Jul 19 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
Nov 27 Javascript
玩转Koa之koa-router原理解析
Dec 29 Javascript
在微信小程序中使用vant的方法
Jun 07 Javascript
Layui多选只有最后一个值的解决方法
Sep 02 Javascript
vue.config.js中配置Vue的路径别名的方法
Feb 11 Javascript
js 图片懒加载的实现
Oct 21 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
javascript常用功能汇总
2015/07/05 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
JS实现轮播图效果
2020/01/11 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
python 以16进制打印输出的方法
2018/07/09 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
Python 解析简单的XML数据
2020/07/24 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
土木工程专业推荐信
2014/02/19 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
投标承诺书怎么写
2014/05/24 职场文书
校园文明标语
2014/06/13 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
学生个人总结范文
2015/02/15 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书