javascript實(shí)現(xiàn)計(jì)算器功能
本文實(shí)例為大家分享了javascript實(shí)現(xiàn)計(jì)算器功能的具體代碼,供大家參考,具體內(nèi)容如下

問題描述:
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">簡易計(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, 操作符號
that.data = {total: 0, next: '', action: ''};
that.bindEvent();
}
},
bindEvent: function () {
var that = this;
// 請補(bǔ)充代碼:獲取 .cal-keyboard 元素
var keyboardEl = document.getElementsByClassName('cal-keyboard')[0]
keyboardEl && keyboardEl.addEventListener('click', function (event) {
// 請補(bǔ)充代碼:獲取當(dāng)前點(diǎn)擊的dom元素
var target = event.target;
// 請補(bǔ)充代碼:獲取target的 data-action 值
var action = target.getAttribute('data-action');
// 請補(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 === '清空') {
// 請補(bǔ)充代碼:設(shè)置清空時(shí)的對應(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 === '÷') {
// 請補(bǔ)充代碼:獲取除法的結(jié)果
if(n2 == 0 || n1 == 0) return 0
return Math.round((n1/n2)*100)/100;
} else if (operator === 'x') {
// 請補(bǔ)充代碼:獲取乘法的結(jié)果
return n1 * n2;
} else if (operator === '+') {
// 請補(bǔ)充代碼:獲取加法的結(jié)果
return n1 + n2;
} else if (operator === '-') {
// 請補(bǔ)充代碼:獲取減法的結(jié)果
return n1 - n2;
}
}
};
Calculator.init();
</script>
</body>
</html>
更多計(jì)算器功能實(shí)現(xiàn),請點(diǎn)擊專題: 計(jì)算器功能匯總 進(jìn)行學(xué)習(xí)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- javascript寫的簡單的計(jì)算器,內(nèi)容很多,方法實(shí)用,推薦
- 簡易js代碼實(shí)現(xiàn)計(jì)算器操作
- js實(shí)現(xiàn)簡單計(jì)算器
- 用JS寫的簡單的計(jì)算器實(shí)現(xiàn)代碼
- javascript-簡單的計(jì)算器實(shí)現(xiàn)步驟分解(附圖)
- html+js實(shí)現(xiàn)簡單的計(jì)算器代碼(加減乘除)
- JavaScript實(shí)現(xiàn)簡單計(jì)算器
- vue.js實(shí)現(xiàn)簡單的計(jì)算器功能
- Vue.js實(shí)現(xiàn)立體計(jì)算器
- JS實(shí)現(xiàn)簡易計(jì)算器
- JS快速實(shí)現(xiàn)簡單計(jì)算器
相關(guān)文章
在chrome瀏覽器中,防止input[text]和textarea在聚焦時(shí)出現(xiàn)黃色邊框的解決方法
chrome瀏覽器不管對于開發(fā)者還是一般用戶都可以說是一個(gè)相當(dāng)優(yōu)秀的網(wǎng)頁瀏覽器,但是在開發(fā)中,讓人感覺很多余的一個(gè)特性就是,在表單項(xiàng)中的控件聚焦時(shí)總會(huì)出現(xiàn)一個(gè)黃色邊框2011-05-05
原生js實(shí)現(xiàn)網(wǎng)頁頂部自動(dòng)下拉/收縮廣告效果
本文主要介紹了原生js實(shí)現(xiàn)網(wǎng)頁頂部自動(dòng)下拉/收縮廣告效果的實(shí)例代碼。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
JavaScript實(shí)現(xiàn)左側(cè)菜單效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)左側(cè)菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
js實(shí)現(xiàn)復(fù)選框的全選和取消全選效果
在很多網(wǎng)站都有這樣的功能,當(dāng)點(diǎn)擊一個(gè)全選按鈕之后,所有的復(fù)選框都會(huì)被選中,再點(diǎn)擊之后會(huì)取消全選,功能非常的人性化,可以省卻很多人力,本文將簡單介紹一下JS如何實(shí)現(xiàn)此功能2017-01-01
基于JS實(shí)現(xiàn)一個(gè)簡單的投票demo
這篇文章主要介紹了如何利用JavaScript實(shí)現(xiàn)一個(gè)簡單的投票demo,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定參考價(jià)值,需要的可以參考一下2022-06-06

