[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>

大概是這樣:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章