js实现计算器效果

公司有道面试题是实现计算器的效果,所有面试者都是进行了很复杂的判断来计算的,甚至使用了正则表达式进行验证,其实本题只是考察js基础知识,关于计算只要使用eval()方法就可以得到结果

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

 eval()方法工作中不常用(至少我很少用到),面试者应该是在这样的情况下没有想到该方法而已,下面给出代码,代码中只做了简单的判断,大家使用时可根据需要做调整

<!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>Document</title>
    <style>
        * {
            box-sizing: border-box;
        }
        .container {
            width: 300px;
            height: 500px;
            background: rgba(255, 167, 167, 0.1);
            padding: 25px 15px;
            color: #10dada;
        }
        .showbox {
            width: 100%;
            height: 50px;
            line-height: 50px;
            font-size: 25px;
            background: #fff;
            text-align: right;
            padding: 0 10px;
        }
        .item {
            float: left;
            width: 58px;
            height: 58px;
            line-height: 58px;
            margin: 4px;
            border-radius: 50%;
            background: #fff;
            text-align: center;
            font-size: 20px;
            cursor: pointer;

        }
        .item:hover {
            box-shadow: 0 0 3px 3px #eee;
        } 
        .panel {
            overflow: hidden;
            margin-top: 20px;
        }
    </style>
    <script
    src="https://code.jquery.com/jquery-3.3.1.js"
    integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
    crossorigin="anonymous"></script>
</head>
<body>
    <div class="container">
        <div class="showbox process"></div>
        <div class="showbox result"></div>
        <div class="panel">
            <div class="item">c</div>
            <div class="item">(</div>
            <div class="item">)</div>
            <div class="item">/</div>

            <div class="item">7</div>
            <div class="item">8</div>
            <div class="item">9</div>
            <div class="item">*</div>

            <div class="item">4</div>
            <div class="item">5</div>
            <div class="item">6</div>
            <div class="item">-</div>

            <div class="item">1</div>
            <div class="item">2</div>
            <div class="item">3</div>
            <div class="item">+</div>

            <div class="item">0</div>
            <div class="item">.</div>
            <div class="item">del</div>
            <div class="item">=</div>
        </div>
    </div>
    <script>
        var process = '';   // 计算式子
        var result = '';    // 计算结果
        var flag = false;   // 是否为显示计算结果状态
        $('.panel').on('click', '.item', function (e) {
            var text = this.innerHTML;      // 获取被点击按钮的文本信息
            if (flag) {                     // 当前为显示结果状态
                process = '';
                result = '';
                flag = false;
            }
            if (text === 'c') {
                process = '';
                result = '';
            } else if (text === 'del') {
                process = process.slice(0, -1);
            } else if (text === '=') {     
                try {
                    result = eval(process);
                } catch (e) {
                    result = '错误'
                }
                flag = true;
            } else {
                process += text;
            }
            $('.process').html(process);
            $('.result').html(result);
        })
    </script>
</body>
</html>

下面是结果图,分别为正确计算和错误的显示

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值