使用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 相关文章推荐
6个DIV 135或246间隔一秒轮番显示效果
Jul 24 Javascript
ExtJs 表单提交登陆实现代码
Aug 19 Javascript
EasyUI中的tree用法介绍
Nov 01 Javascript
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
Nov 25 Javascript
jQuery修改class属性和CSS样式整理
Jan 30 Javascript
javascript实现加载xml文件的方法
Nov 24 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
May 05 Javascript
浅谈原生JS中的延迟脚本和异步脚本
Jul 12 Javascript
angular5 httpclient的示例实战
Mar 12 Javascript
Webpack path与publicPath的区别详解
May 03 Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 Javascript
微信小程序实现聊天室功能
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
You might like
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
python 产生token及token验证的方法
2018/12/26 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
英国日常交易网站:Wowcher
2018/09/04 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
请介绍一下WSDL的文档结构
2013/03/17 面试题
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
新品发布会主持词
2014/04/02 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
个人先进事迹材料
2014/12/29 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
小学生表扬稿范文
2015/05/05 职场文书
教师师德工作总结2015
2015/07/22 职场文书