面向对象思想实现简易计算器

这个博客通过HTML、CSS和JavaScript实现了一个简单的计算器。它使用面向对象的思想,定义了一个calculator对象,包含了输入框、操作符、结果显示等元素,并实现了加、减、乘、除等基本运算。此外,还通过自定义接口扩展了模运算和求倒数的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        body{
            background: #e2e2e2;
        }
        *{
            margin: 10px;
        }
        .wrap{
            margin:200px auto;
            width: 600px;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <div id="top">
            <input type="text" id="former">
            <span id="operator"></span>
            <input type="text" id="laster">
            <span>=</span>
            <span class="result"></span>
        </div>
        <div id="bottom">
            <button id="add">+</button>
            <button id="subtract">-</button>
            <button id="multiply">×</button>
            <button id="divide">÷</button>
            <button id="mod">%</button>
            <button id="reverse">1/x</button>
        </div>
    </div>
    <script type="text/javascript">
    var operation;
    (function(){
        var calculator={
            former:document.getElementById('former'),
            laster:document.getElementById('laster'),
            operator:document.getElementById('operator'),
            result:document.querySelector('.result'),     
            btns:document.getElementsByTagName('button'),
            bottom:document.getElementById('bottom')
        }
        var operate={
            add:function(num1,num2){
                return num1+num2;
                },
            subtract:function(num1,num2){
                return num1-num2;
                },
            multiply:function(num1,num2){
                return num1*num2;
                },
            divide:function(num1,num2){
                return num1/num2;
                },
            addoperate:function(name,fn){
                if(!operate[name]){
                    operate[name]=fn;
                }else{
                    throw new Error('已有该方法');
                }
            }
        }
           
        calculator.bottom.onclick=function(){
            changeOperator(event.target.innerHTML);
            changeResult(calculate(event.target.id,+calculator.former.value,+calculator.laster.value));
        }

        
        function changeOperator(content){
            calculator.operator.innerHTML=content;
        }
        function changeResult(content){
            calculator.result.innerHTML=content;
        }
        function calculate(name){
            return operate[name](...[].slice.call(arguments,1));
        }

        //接口
        operation=operate.addoperate;

    })();


    operation('mod',function(num1,num2){
        return num1%num2;
    });
    operation('reverse',function(num1){
        return 1/num1;
    });

    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值