最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript實(shí)現(xiàn)計(jì)算器功能

 更新時(shí)間:2020年03月30日 15:01:38   作者:時(shí)間不夠以後  
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript仿微博輸入框效果(案例分析)

    JavaScript仿微博輸入框效果(案例分析)

    這篇文章給大家分享一個(gè)小的JavaScript的案例,就是模仿微博輸入框的效果,非常不錯(cuò),對微博輸入框效果感興趣的朋友通過本文學(xué)習(xí)吧
    2016-12-12
  • coffeescript使用的方式匯總

    coffeescript使用的方式匯總

    而來到CoffeeScript的世界,美妙故事再次上演。在寫了幾行代碼后我相信你將不會(huì)再想念原生的Javascript了。CoffeeScript包含了許多新特性,當(dāng)將它與jQuery,node.js,javascript結(jié)合時(shí),你會(huì)發(fā)現(xiàn)一片新天地。
    2015-08-08
  • 在chrome瀏覽器中,防止input[text]和textarea在聚焦時(shí)出現(xià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
  • 用jmSlip編寫移動(dòng)端頂部日歷選擇控件

    用jmSlip編寫移動(dòng)端頂部日歷選擇控件

    這篇文章主要為大家詳細(xì)介紹了利用jmSlip編寫移動(dòng)端頂部日歷選擇組件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • js過濾HTML標(biāo)簽完整實(shí)例

    js過濾HTML標(biāo)簽完整實(shí)例

    這篇文章主要介紹了js過濾HTML標(biāo)簽實(shí)現(xiàn)方法,以完整實(shí)例形式分析了JavaScript使用正則表達(dá)式過濾HTML標(biāo)簽的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • 原生js實(shí)現(xiàn)網(wǎng)頁頂部自動(dòng)下拉/收縮廣告效果

    原生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è)菜單效果

    JavaScript實(shí)現(xiàn)左側(cè)菜單效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)左側(cè)菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • js實(shí)現(xiàn)復(fù)選框的全選和取消全選效果

    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

    基于JS實(shí)現(xiàn)一個(gè)簡單的投票demo

    這篇文章主要介紹了如何利用JavaScript實(shí)現(xiàn)一個(gè)簡單的投票demo,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定參考價(jià)值,需要的可以參考一下
    2022-06-06
  • js實(shí)現(xiàn)跨域的方法實(shí)例詳解

    js實(shí)現(xiàn)跨域的方法實(shí)例詳解

    這篇文章主要介紹了js實(shí)現(xiàn)跨域的方法,實(shí)例分析了幾種常用的javascript實(shí)現(xiàn)跨域的技巧,需要的朋友可以參考下
    2015-06-06

最新評論

金昌市| 舞阳县| 西安市| 镇雄县| 汪清县| 海门市| 门头沟区| 乌兰察布市| 株洲县| 思南县| 汝州市| 洞头县| 福鼎市| 东至县| 杭州市| 乌鲁木齐县| 陆河县| 安吉县| 嫩江县| 苗栗市| 修文县| 恩施市| 乌拉特后旗| 子长县| 伊吾县| 长沙县| 山阳县| 阳谷县| 绿春县| 新沂市| 临潭县| 胶州市| 岚皋县| 正镶白旗| 关岭| 汨罗市| 昭觉县| 乌鲁木齐县| 七台河市| 驻马店市| 靖远县|