javascript實(shí)現(xiàn)計(jì)算器功能
本文實(shí)例為大家分享了javascript實(shí)現(xiàn)計(jì)算器功能的具體代碼,供大家參考,具體內(nèi)容如下
問(wèn)題描述:
1、除法操作時(shí),如果被除數(shù)為0,則結(jié)果為0
2、結(jié)果如果為小數(shù),最多保留小數(shù)點(diǎn)后兩位,如2 / 3 =0.67(顯示0.67),1 / 2 = 0.5(顯示0.5)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>百度筆試0329</title> <style type="text/css"> body, ul, li,select { margin: 0; padding: 0; box-sizing: border-box; } ul,li {list-style: none;} .calculator { max-width: 300px; margin: 20px auto; border: 1px solid #eee; border-radius: 3px; } .cal-header { font-size: 16px; color: #333; font-weight: bold; height: 48px; line-height: 48px; border-bottom: 1px solid #eee; text-align: center; } .cal-main { font-size: 14px; } .cal-main .origin-value { padding: 15px; height: 40px; line-height: 40px; font-size: 20px; text-align: right; overflow: hidden; text-overflow:ellipsis; white-space: nowrap; } .cal-main .origin-type, .cal-main .target-type { padding-left: 5px; width: 70px; font-size: 14px; height: 30px; border: 1px solid #eee; background-color: #fff; vertical-align: middle; margin-right: 10px; border-radius: 3px; } .cal-keyboard { overflow: hidden; } .cal-items { overflow: hidden; } .cal-items li { user-select: none; float: left; display: inline-block; width: 75px; height: 75px; text-align: center; line-height: 75px; border-top: 1px solid #eee; border-left: 1px solid #eee; box-sizing: border-box; } li:nth-of-type(4n+1) { border-left: none; } li[data-action=operator] { background: #f5923e; color: #fff; } .buttons { float: left; width: 75px; } .buttons .btn { width: 75px; background-color: #fff; border-top: 1px solid #eee; border-left: 1px solid #eee; height: 150px; line-height: 150px; text-align: center; } .btn-esc { color: #ff5a34; } .btn-backspace { position: relative; } </style> </head> <body> <div class="calculator"> <header class="cal-header">簡(jiǎn)易計(jì)算器</header> <main class="cal-main"> <div class="origin-value">0</div> <div class="cal-keyboard"> <ul class="cal-items"> <li data-action="num">7</li> <li data-action="num">8</li> <li data-action="num">9</li> <li data-action="operator">÷</li> <li data-action="num">4</li> <li data-action="num">5</li> <li data-action="num">6</li> <li data-action="operator">x</li> <li data-action="num">1</li> <li data-action="num">2</li> <li data-action="num">3</li> <li data-action="operator">-</li> <li data-action="num">0</li> <li data-action="operator">清空</li> <li data-action="operator">=</li> <li data-action="operator">+</li> </ul> </div> </main> </div> <script type="text/javascript"> var Calculator = { init: function () { var that = this; if (!that.isInited) { that.isInited = true; // 保存操作信息 // total: Number, 總的結(jié)果 // next: String, 下一個(gè)和 total 進(jìn)行運(yùn)算的數(shù)據(jù) // action: String, 操作符號(hào) that.data = {total: 0, next: '', action: ''}; that.bindEvent(); } }, bindEvent: function () { var that = this; // 請(qǐng)補(bǔ)充代碼:獲取 .cal-keyboard 元素 var keyboardEl = document.getElementsByClassName('cal-keyboard')[0] keyboardEl && keyboardEl.addEventListener('click', function (event) { // 請(qǐng)補(bǔ)充代碼:獲取當(dāng)前點(diǎn)擊的dom元素 var target = event.target; // 請(qǐng)補(bǔ)充代碼:獲取target的 data-action 值 var action = target.getAttribute('data-action'); // 請(qǐng)補(bǔ)充代碼:獲取target的內(nèi)容 var value = target.innerHTML; if (action === 'num' || action === 'operator') { that.result(value, action === 'num'); } }); }, result: function (action, isNum) { var that = this; var data = that.data; if (isNum) { data.next = data.next === '0' ? action : (data.next + action); !data.action && (data.total = 0); } else if (action === '清空') { // 請(qǐng)補(bǔ)充代碼:設(shè)置清空時(shí)的對(duì)應(yīng)狀態(tài) data.total = 0; data.next = ''; data.action = ''; } else if (action === '=') { if (data.next || data.action) { data.total = that.calculate(data.total, data.next, data.action); data.next = ''; data.action = ''; } } else if (!data.next) { data.action = action; } else if (data.action) { data.total = that.calculate(data.total, data.next, data.action); data.next = ''; data.action = action; } else { data.total = +data.next || 0; data.next = ''; data.action = action; } // ���補(bǔ)充代碼:獲取 .origin-value 元素 var valEl = document.getElementsByClassName('origin-value')[0]; valEl && (valEl.innerHTML = data.next || data.total || '0'); }, calculate: function (n1, n2, operator) { n1 = +n1 || 0; n2 = +n2 || 0; if (operator === '÷') { // 請(qǐng)補(bǔ)充代碼:獲取除法的結(jié)果 if(n2 == 0 || n1 == 0) return 0 return Math.round((n1/n2)*100)/100; } else if (operator === 'x') { // 請(qǐng)補(bǔ)充代碼:獲取乘法的結(jié)果 return n1 * n2; } else if (operator === '+') { // 請(qǐng)補(bǔ)充代碼:獲取加法的結(jié)果 return n1 + n2; } else if (operator === '-') { // 請(qǐng)補(bǔ)充代碼:獲取減法的結(jié)果 return n1 - n2; } } }; Calculator.init(); </script> </body> </html>
更多計(jì)算器功能實(shí)現(xiàn),請(qǐng)點(diǎn)擊專題: 計(jì)算器功能匯總 進(jìn)行學(xué)習(xí)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- javascript寫的簡(jiǎn)單的計(jì)算器,內(nèi)容很多,方法實(shí)用,推薦
- 簡(jiǎn)易js代碼實(shí)現(xiàn)計(jì)算器操作
- js實(shí)現(xiàn)簡(jiǎn)單計(jì)算器
- 用JS寫的簡(jiǎn)單的計(jì)算器實(shí)現(xiàn)代碼
- javascript-簡(jiǎn)單的計(jì)算器實(shí)現(xiàn)步驟分解(附圖)
- html+js實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器代碼(加減乘除)
- JavaScript實(shí)現(xiàn)簡(jiǎn)單計(jì)算器
- vue.js實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能
- Vue.js實(shí)現(xiàn)立體計(jì)算器
- JS實(shí)現(xiàn)簡(jiǎn)易計(jì)算器
- JS快速實(shí)現(xiàn)簡(jiǎn)單計(jì)算器
相關(guān)文章
ES6新特性:使用export和import實(shí)現(xiàn)模塊化詳解
本篇文章主要介紹了ES6新特性:使用export和import實(shí)現(xiàn)模塊化詳解,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07JS實(shí)現(xiàn)的簡(jiǎn)單圖片切換功能示例【測(cè)試可用】
這篇文章主要介紹了JS實(shí)現(xiàn)的簡(jiǎn)單圖片切換功能,結(jié)合實(shí)例形式分析了javascript結(jié)合時(shí)間函數(shù)定時(shí)觸發(fā)控制圖片的遍歷與切換操作相關(guān)技巧,需要的朋友可以參考下2017-02-02關(guān)于JavaScript實(shí)現(xiàn)動(dòng)畫時(shí)動(dòng)畫抖動(dòng)的原因與解決方法
最近在使用JS動(dòng)畫做一些練習(xí)的時(shí)候我發(fā)現(xiàn)在動(dòng)畫執(zhí)行時(shí)間內(nèi)快速移開鼠標(biāo)時(shí)會(huì)出現(xiàn)動(dòng)畫因鼠標(biāo)移動(dòng)過(guò)快從而導(dǎo)致代碼沖突讓畫面抖動(dòng)的bug,這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)動(dòng)畫時(shí)動(dòng)畫抖動(dòng)的原因與解決方法,需要的朋友可以參考下2022-06-06圖片自動(dòng)縮小的js代碼,用以防止圖片撐破頁(yè)面
圖片自動(dòng)縮小的js代碼,用以防止圖片撐破頁(yè)面...2007-03-03基于JavaScript實(shí)現(xiàn)HarmonyOS備忘錄服務(wù)卡片
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)HarmonyOS備忘錄服務(wù)卡片,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05