[Javascript]简单的数学计算器

一个简单的数学计算器

实现了小部分的基础功能, 大概是这样:

代码如下:

<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>Calculator</title>
</head>
<style>
    .all-calculator-location-set{
        width: 260px;
        margin: 200px auto;  
    }
    .btn-style{
        width: 60px;
        height: 40px;
    }
    .input-calculator-show{
        width: 250px;
        height: 50px;
        text-align: right;
        font-size: 30px;
    }
    .panel-location{
        margin-top: 20px;
    }
</style>

<body>
    <div class="all-calculator-location-set">
        <div>
            <input class="input-calculator-show" type="text" id="Calculator_show" disabled="disabled" value="0">
        </div>
        <div class="panel-location">
            <input class="btn-style" type="button" value="CE" onclick="clear_this_num()">
            <input class="btn-style" type="button" value="C" onclick="clear_num()">
            <input class="btn-style" type="button" value="←" onclick="backspace_num()">
            <input class="btn-style" type="button" value="/" onclick="calculation(3)">
            <br>
            <input class="btn-style" type="button" value="7" onclick="add_num(7)">
            <input class="btn-style" type="button" value="8" onclick="add_num(8)">
            <input class="btn-style" type="button" value="9" onclick="add_num(9)">
            <input class="btn-style" type="button" value="*" onclick="calculation(2)">
            <br>
            <input class="btn-style" type="button" value="4" onclick="add_num(4)">
            <input class="btn-style" type="button" value="5" onclick="add_num(5)">
            <input class="btn-style" type="button" value="6" onclick="add_num(6)">
            <input class="btn-style" type="button" value="-" onclick="calculation(1)">
            <br>
            <input class="btn-style" type="button" value="1" onclick="add_num(1)">
            <input class="btn-style" type="button" value="2" onclick="add_num(2)">
            <input class="btn-style" type="button" value="3" onclick="add_num(3)">
            <input class="btn-style" type="button" value="+" onclick="calculation(0)">
            <br>
            <input class="btn-style" type="button" value="±" onclick="minus_num()">
            <input class="btn-style" type="button" value="0" onclick="add_num(0)">
            <input class="btn-style" type="button" value="." onclick="add_num('.')">
            <input class="btn-style" type="button" value="=" onclick="getValue()">
            <br>
        </div>
    </div>
</body>

<script>

    var Calculator_show = document.getElementById('Calculator_show');

    var first_num = "";
    var second_num = "";

    var setCalculatorType = -1;

    /**
     * 获取键盘输入, 组成数字
     *
     * @param {*} param 输入的数字
     */
    function add_num(param) {
        //当一次计算完成的时候, 如果不继续点击运算符,
        //那么返回初始状态, 为下一次计算做准备
        if (first_num != "" && setCalculatorType == -1 && second_num != "") {
            clear_num();
        }
        //当用户直接点击小数点时, 自动补零
        if (first_num.length === 0 && param == '.') {
            first_num += "0";
        }
        first_num += param.toString();
        Calculator_show.value = first_num;
    }

    /**
     *回退键
     *
     * @returns
     */
    function backspace_num() {
        //当一次计算的完成的时候, 数字不能进行回退操作
        //获取异常, 直接返回原始状态即可
        try {
            if (first_num.length === 1) {
                Calculator_show.value = 0;
                first_num = "";
                return;
            }
            first_num = first_num.substring(0, first_num.length - 1);
            Calculator_show.value = first_num;
        } catch (e) {
            clear_num();
        }
    }

    /**
     *清除当前计算的数, 以供重新输入
     *
     */
    function clear_this_num() {
        first_num = "";
        Calculator_show.value = 0;
    }

    /**
     *计算器回归到原始状态
     *
     */
    function clear_num() {
        first_num = "";
        second_num = "";
        setCalculatorType = -1;
        Calculator_show.value = 0;
    }

    /**
     *调整操作数是正数还是负数
     *
     */
    function minus_num() {
        if (first_num != 0) {
            first_num = Number(0 - first_num);
            Calculator_show.value = first_num;
        }
    }

    /**
     *存储操作数
     *设置计算方式
     *
     * @param {*} param 计算方式
     */
    function calculation(param) {
        if (setCalculatorType == -1) {
            second_num = first_num;
        }
        // switch (param) {
        //     case 0:
        //         setCalculatorType = 0;
        //         break;
        //     case 1:
        //         setCalculatorType = 1;
        //         break;
        //     case 2:
        //         setCalculatorType = 2;
        //         break;
        //     case 3:
        //         setCalculatorType = 3;
        //         break;
        // }
        setCalculatorType = param;
        first_num = "";
        Calculator_show.value = 0;
    }

    function addition() {
        return Number(second_num) + Number(first_num);
    }

    function subtraction() {
        return Number(second_num) - Number(first_num);
    }

    function multiplication() {
        return Number(second_num) * Number(first_num);
    }

    function division() {
        return Number(second_num) / Number(first_num);
    }

    /**
     *获取最后的结果
     *
     */
    function getValue() {
        switch (setCalculatorType) {
            case 0:
                Calculator_show.value = first_num = addition();
                break;
            case 1:
                Calculator_show.value = first_num = subtraction();
                break;
            case 2:
                Calculator_show.value = first_num = multiplication();
                break;
            case 3:
                Calculator_show.value = first_num = division();
                break;
            default:
                Calculator_show.value = 0;
        }
        setCalculatorType = -1;
    }
</script>

</html>

大概是这样:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖纸不争

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值