溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

原生JS怎么實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能

發(fā)布時(shí)間:2022-04-02 11:03:36 來(lái)源:億速云 閱讀:161 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“原生JS怎么實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“原生JS怎么實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能”吧!

使用html和css寫(xiě)出計(jì)算器的基本結(jié)構(gòu)和樣式,用原生JS實(shí)現(xiàn)計(jì)算器的加減乘除運(yùn)算功能,只能計(jì)算簡(jiǎn)單的兩位數(shù)的運(yùn)算,不支持三個(gè)數(shù)連加或者連乘等等。一次計(jì)算完成之后再進(jìn)行下一次運(yùn)算不需要clear,可以直接進(jìn)行下次運(yùn)算。具體實(shí)現(xiàn)如下:

html結(jié)構(gòu):

<div id="box">
        <!-- 文本框要禁止用戶輸入,只能通過(guò)代碼中的input.value來(lái)修改 -->
        <input id="display" type="text" value="0" disabled>    
        <div class="btn">1</div>
        <div class="btn">2</div>
        <div class="btn">3</div>
        <div class="btn">+</div>
        <div class="btn">4</div>
        <div class="btn">5</div>
        <div class="btn">6</div>
        <div class="btn">-</div>
        <div class="btn">7</div>
        <div class="btn">8</div>
        <div class="btn">9</div>
        <div class="btn">*</div>
        <div class="btn">C</div>
        <div class="btn">0</div>
        <div class="btn">=</div>
        <div class="btn">/</div>
</div>

css樣式:

#box {
            width: 500px;
            height: 600px;
            border: 1px solid #000000;
        }
 
        #display {
            width: 460px;
            height: 60px;
            margin: 15px;
            text-align: right;
            font-size: 60px;
            line-height: 60px;
            overflow: hidden;
            /* overflow: hidden;  溢出隱藏 */
            /* text-overflow: ellipsis;  文本溢出時(shí)顯示省略號(hào)  */
            /* word-wrap: none;   強(qiáng)制不換行 */
            background: #ffffff;
        }
 
        .btn {
            width: 100px;
            height: 100px;
            border: 1px solid #000000;
            float: left;
            margin: 10px 11px;
            font-size: 40px;
            line-height: 100px;
            text-align: center;
            user-select: none;
 }

JS代碼:

firstValue這個(gè)全局變量存儲(chǔ)第一次輸入的數(shù),input的input.value屬性也是一個(gè)變量,這個(gè)值既作為頁(yè)面上顯示的內(nèi)容,也是輸入的數(shù)值。讓這兩個(gè)值進(jìn)行運(yùn)算,結(jié)果再顯示到輸入框中即可。bool變量作用:當(dāng)一次運(yùn)算完成之后所有數(shù)值清零。

如果要實(shí)現(xiàn)用上一次的結(jié)果繼續(xù)參與運(yùn)算這個(gè)功能,可以再設(shè)置一個(gè)全局變量result來(lái)存儲(chǔ)每次運(yùn)算后的結(jié)果,當(dāng)下次輸入運(yùn)算符號(hào)時(shí),判斷firstValue和result,再?zèng)Q定用哪個(gè)值計(jì)算。當(dāng)點(diǎn)擊C按鈕時(shí),所有值清空,返回初始狀態(tài)。

var input = document.getElementById("display");
var btnCollection = document.getElementsByClassName("btn");
var type;
var firstValue = 0;
var bool = false;
 
   for (var i = 0; i < btnCollection.length; i++) {
   // 獲取到每個(gè)按鍵并添加點(diǎn)擊事件。點(diǎn)擊后會(huì)觸發(fā)function中代碼執(zhí)行。
            btnCollection[i].onclick = function () {
                if(bool){
                    input.value = "0";
                    firstValue = 0;
                    type = undefined;
                    bool = false;
                }
 
                // input.value = this.innerHTML;      //顯示點(diǎn)擊的數(shù)字在文本框內(nèi)
 
                if (!isNaN(Number(this.innerHTML))) {
                    input.value = Number(input.value + this.innerHTML).toString();
                } else if (this.innerHTML !== "C" && this.innerHTML !== "=") {
                    firstValue = Number(input.value);
                    type = this.innerHTML;
                    input.value = 0;
                } else if (this.innerHTML === "C") {
                    firstValue = 0;
                    type = undefined;
                    input.value = "0";
                } else {
                    switch (type) {
                        case "+":
                            input.value = (Number(input.value) + firstValue).toString();
                            break;
                        case "-":
                            input.value = (firstValue - Number(input.value)).toString();
                            break;
                        case "*":
                            input.value = (Number(input.value) * firstValue).toString();
                            break;
                        case "/":
                            input.value = (firstValue / Number(input.value)).toString();
                            break;
                    }
                    bool = true;
                }
            }
        }

到此,相信大家對(duì)“原生JS怎么實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

js
AI