JS简易计算器的实现,以及代码的优化

用JS实现简易计算器

首先创建结构和样式

<!DOCTYPE html>
<html lang="en"head>
    Meta charset="UTF-8"name="viewport" content="width=device-width,initial-scale=1.0"title>Document</style>
        body{
            margin:0;
            padding
            background-color #abcdef;
        }
        .cal
            width560px
            height100px0 auto
            padding-top300px}
    body>

    div class="cal">
        p>
            input type="text" class="num1" value="1"span ="sign">+span="num2">=="res">2="button"="+"="-"="*"="/">            
    divscript>


>

html>

 

 添加javascript功能

="+"="btn"="-"="*"="/">
    var cal=document.querySelector(".cal);
     num1cal.querySelector(.num1 num2.num2 sign.sign res.res);

     btnscal.querySelectorAll(.btn);

    btns[].onclickadd;
    btns[1subtract;
    btns[2multiply;
    btns[3divide;

    function add(){
        sign.innerHTML+;
        //由于DOM获取到的值都是字符串形式,因此进行操作时需要先转为number类型
        res.innerHTMLNumber(num1.value)Number(num2.value);
    }
     subtract(){
        sign.innerHTML-;
        res.innerHTML multiply(){
        sign.innerHTML*Number(num2.value);    
    }
     divide(){
        sign.innerHTML/Number(num2.value);    
    }
>

代码的优化:

循环实现绑定

一个外部接口,用于新增运算

="btn" title="add"="subtract"="multiply"="divide"="%"="mod"给每个按钮绑定事件
    for( i;i<btns.length;i++){
        operate(i);
    }

    运算函数
     operate(i){
         opbtns[i].value;获取运算
         opNamebtns[i].title;获取运算名
        绑定事件
        btns[i].onclick(){
            sign.innerHTMLop;
            res.innerHTMLoperation[opName](Number(num1.value),Number(num2.value));
        }
    }

     operation{
        add:(n1,n2){
            return n1n2;
        },subtract:n2;
        },一个新增运算的接口
        addOperation:(name,fn){
            如果该运算不存在
            if!this.name){
                [name]fn;
            }
        }
    }

    新增取余运算
    operation.addOperation(mod,n2){
        %n2;
    });
>

 

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...