欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS實現(xiàn)簡易計算器

 更新時間:2020年02月14日 09:07:04   作者:天予不洗頭  
這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)簡易計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

用JS實現(xiàn)簡易計算器,供大家參考,具體內(nèi)容如下

首先創(chuàng)建結(jié)構(gòu)和樣式

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <style>
  body{
   margin:0;
   padding:0;
   background-color: #abcdef;
  }
  .cal{
   width:560px;
   height:100px;
   margin:0 auto;
   padding-top:300px;
  }
 </style>
</head>
<body>

 <div class="cal">
  <p>
   <input type="text" class="num1" value="1">
   <span class="sign">+</span>
   <input type="text" class="num2" value="1">
   <span>=</span>
   <span class="res">2</span>
  </p>
  <p>
   <input type="button" value="+">
   <input type="button" value="-">
   <input type="button" value="*">
   <input type="button" value="/">
  </p>   
 </div>
<script>


</script>

</body>
</html>

然后添加Java script

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <style>
  body{
   margin:0;
   padding:0;
   background-color: #abcdef;
  }
  .cal{
   width:560px;
   height:100px;
   margin:0 auto;
   padding-top:300px;
  }
 </style>
</head>
<body>

 <div class="cal">
  <p>
   <input type="text" class="num1" value="1">
   <span class="sign">+</span>
   <input type="text" class="num2" value="1">
   <span>=</span>
   <span class="res">2</span>
  </p>
  <p>
   <input type="button" value="+" class="btn">
   <input type="button" value="-" class="btn">
   <input type="button" value="*" class="btn">
   <input type="button" value="/" class="btn">
  </p>   
 </div>

<script>
 var cal=document.querySelector(".cal");
 var num1=cal.querySelector(".num1");
 var num2=cal.querySelector(".num2");
 var sign=cal.querySelector(".sign");
 var res=cal.querySelector(".res");

 var btns=cal.querySelectorAll(".btn");

 btns[0].onclick=add;
 btns[1].onclick=subtract;
 btns[2].onclick=multiply;
 btns[3].onclick=divide;

 function add(){
  sign.innerHTML="+";
  //由于DOM獲取到的值都是字符串形式,因此進(jìn)行操作時需要先轉(zhuǎn)為number類型
  res.innerHTML=Number(num1.value)+Number(num2.value);
 }
 function subtract(){
  sign.innerHTML="-";
  res.innerHTML=Number(num1.value)-Number(num2.value);
 }
 function multiply(){
  sign.innerHTML="*";
  res.innerHTML=Number(num1.value)*Number(num2.value); 
 }
 function divide(){
  sign.innerHTML="/";
  res.innerHTML=Number(num1.value)/Number(num2.value); 
 }
</script>

</body>
</html>

代碼的優(yōu)化:

循環(huán)實現(xiàn)綁定

給一個外部接口,用于新增運算

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <style>
  body{
   margin:0;
   padding:0;
   background-color: #abcdef;
  }
  .cal{
   width:560px;
   height:100px;
   margin:0 auto;
   padding-top:300px;
  }
 </style>
</head>
<body>

 <div class="cal">
  <p>
   <input type="text" class="num1" value="1">
   <span class="sign">+</span>
   <input type="text" class="num2" value="1">
   <span>=</span>
   <span class="res">2</span>
  </p>
  <p>
   <input type="button" value="+" class="btn" title="add">
   <input type="button" value="-" class="btn" title="subtract">
   <input type="button" value="*" class="btn" title="multiply">
   <input type="button" value="/" class="btn" title="divide">
   <input type="button" value="%" class="btn" title="mod">
  </p>   
 </div>

<script>
 var cal=document.querySelector(".cal");
 var num1=cal.querySelector(".num1");
 var num2=cal.querySelector(".num2");
 var sign=cal.querySelector(".sign");
 var res=cal.querySelector(".res");

 var btns=cal.querySelectorAll(".btn");

 //給每個按鈕綁定事件
 for(var i=0;i<btns.length;i++){
  operate(i);
 }

 //運算函數(shù)
 function operate(i){
  var op=btns[i].value;//獲取運算
  var opName=btns[i].title;//獲取運算名
  //綁定事件
  btns[i].onclick=function(){
   sign.innerHTML=op;
   res.innerHTML=operation[opName](Number(num1.value),Number(num2.value));
  }
 }

 var operation={
  add:function(n1,n2){
   return n1+n2;
  },
  subtract:function(n1,n2){
   return n1-n2;
  },
  multiply:function(n1,n2){
   return n1*n2;
  },
  divide:function(n1,n2){
   return n1/n2;
  },
  //給一個新增運算的接口
  addOperation:function(name,fn){
   //如果該運算不存在
   if(!this.name){
    this[name]=fn;
   }
  }
 }

 //新增取余運算
 operation.addOperation("mod",function(n1,n2){
  return n1%n2;
 });
</script>

</body>
</html>

這樣就圓滿完成咯

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript解決innerText瀏覽器兼容問題思路代碼

    javascript解決innerText瀏覽器兼容問題思路代碼

    innerText瀏覽器兼容這塊始終都是一個問題,下面與大家分享下使用javascript解決,感興趣的朋友可以參考下哈,希望對你有所幫助
    2013-05-05
  • Javascript 遍歷頁面text控件詳解

    Javascript 遍歷頁面text控件詳解

    本篇文章主要是對Javascript遍歷頁面text控件進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • 深入理解JavaScript Promise鏈?zhǔn)秸{(diào)用與錯誤處理機制

    深入理解JavaScript Promise鏈?zhǔn)秸{(diào)用與錯誤處理機制

    在JavaScript的異步編程中,Promise是一個非常重要的概念,它允許我們以鏈?zhǔn)降姆绞教幚懋惒讲僮?使得代碼更加清晰和易于管理,本文將通過一系列代碼示例,深入探討Promise的鏈?zhǔn)秸{(diào)用和錯誤處理機制,需要的朋友可以參考下
    2024-09-09
  • 基于JavaScript實現(xiàn)驗證碼功能

    基于JavaScript實現(xiàn)驗證碼功能

    這篇文章主要介紹了基于JavaScript實現(xiàn)驗證碼功能的相關(guān)資料
    2017-04-04
  • js漂浮廣告實現(xiàn)代碼

    js漂浮廣告實現(xiàn)代碼

    js漂浮廣告實現(xiàn)代碼,本質(zhì)上就是一個來回滾動的小圖片,也是一種廣告形式,需要的朋友可以收藏下
    2015-08-08
  • 微信小程序?qū)崿F(xiàn)簡單Tab切換效果

    微信小程序?qū)崿F(xiàn)簡單Tab切換效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)簡單Tab切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 原生js頁面滾動延遲加載圖片

    原生js頁面滾動延遲加載圖片

    這篇文章主要介紹了原生js頁面滾動延遲加載圖片的相關(guān)資料,現(xiàn)在瀑布流效果大行其道,各種網(wǎng)站都有應(yīng)用,尤其是專業(yè)的圖片類型的網(wǎng)站,感興趣的朋友可以參考下
    2015-12-12
  • JS組件系列之Gojs組件 前端圖形化插件之利器

    JS組件系列之Gojs組件 前端圖形化插件之利器

    這篇文章主要介紹了Gojs組件,前端圖形化插件之利器的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • JS使用Dijkstra算法求解最短路徑

    JS使用Dijkstra算法求解最短路徑

    這篇文章主要為大家詳細(xì)介紹了JS使用Dijkstra算法求解最短路徑,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 基于js中的原型、繼承的一些想法

    基于js中的原型、繼承的一些想法

    下面小編就為大家?guī)硪黄趈s中的原型、繼承的一些想法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08

最新評論