全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

简单实现JS计算器功能

该计算器功能:
1.校验:小数点,重复计算,以及大量更符合用户体验的操作。
2.能够从键盘输入。

效果图:

html代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
<link type="text/css" rel="stylesheet" href="css/style.css"></link> 
</head> 
<body> 
  <!--定义按键表格,每个按键对应一个事件触发--> 
  <div id="cal" class="cal"> 
    <form action="./calcuServlet" method="post" id="toCalcu"> 
      <div class="cont"> 
      <input id="upText" class="textShow" type="text" name="process"  
         maxlength="10" readonly="readonly" />  
      <input id="downText" class="text" type="text" name="text" value="0" 
         maxlength="10" readonly="readonly" />  
          
      <input type="button" class="button" name="deleteAll" value="C" onclick="clearAllText()" /> 
      <input type="button" class="button" name="opposite" value="+/-" onclick="oppositeOp()" />  
      <input type="button" class="button" name="delOne" value="←" onclick="deleteOneDigit()" />  
      <input type="button" class="button" name="Add" value="+" onclick="clickOperation('+')" />      
      <input type="button" class="button" name="seven" value="7" onclick="clickNum(7)" /> 
      <input type="button" class="button" name="eight" value="8" onclick="clickNum(8)" /> 
      <input type="button" class="button" name="nine" value="9" onclick="clickNum(9)" /> 
      <input type="button" class="button" name="Reduce" value="-" onclick="clickOperation('-')" /> 
      <input type="button" class="button" name="Four" value="4" onclick="clickNum(4)" /> 
      <input type="button" class="button" name="Five" value="5" onclick="clickNum(5)" /> 
      <input type="button" class="button" name="Sex" value="6" onclick="clickNum(6)" />  
      <input type="button" class="button" name="Multip" value="x" onclick="clickOperation('x')" /> 
      <input type="button" class="button" name="One" value="1" onclick="clickNum(1)" />  
      <input type="button" class="button" name="Two" value="2" onclick="clickNum(2)" /> 
      <input type="button" class="button" name="Three" value="3" onclick="clickNum(3)" /> 
      <input type="button" class="button" name="Division" value="÷" onclick="clickOperation('/')" /> 
      <input type="button" class="button" name="opposite" value="√" onclick="more()" />    
      <input type="button" class="button" name="Zero" value="0" onclick="clickNum(0)" /> 
      <input type="button" class="button" name="Point" value="." onclick="clickNum('.')" /> 
      <input type="button" class="button" name="Equal" value="=" onclick="calcu()" />  
      </div> 
    </form> 
 
  </div> 
  <div class="funcBtn"> 
    <input type="button" id="show" class="button" value="show" onclick="show()" /> <input 
      type="button" id="hide" class="button" value="hide" onclick="hide()" /> 
  </div> 
   
<script type="text/javascript" src="./js/jquery-1.7.2.min.js"></script> 
<script type="text/javascript" src="./js/calcu.js"></script> 
</body> 
</html> 

css代码:

@CHARSET "UTF-8"; 
.button { 
  width: 73px; 
  height: 50px; 
  margin-bottom: 5px; 
  border: 1px solid #ddd; 
  border-radius: 1px; 
  font-weight: bold; 
  color: #1e395b; 
  background: aqua; 
  font-size:20px; 
  border-radius: 3px; 
} 
.text { 
  width: 300px; 
  border: 1px solid #c2c2c2; 
  height: 50px; 
  border-radius: 5px; 
  font-size: 24px; 
  text-align: right; 
  background: #ffffff; 
  margin-top: 10px; 
  margin-bottom: 10px; 
} 
.textShow{ 
  width: 300px; 
  border: 1px solid #c2c2c2; 
  height: 40px; 
  border-radius: 5px; 
  font-size: 18px; 
  text-align: right; 
  background: #ffffff; 
  margin-top: 10px; 
  margin-bottom: 10px; 
} 
.cal{ 
margin-left:200px; 
border:2px solid #99ccff; 
margin:100px auto; 
position:relative; 
width:330px; 
height:420px; 
border-radius: 10px; 
} 
.cont{ 
 margin-left: 10px; 
} 
.funcBtn{ 
padding-left: 580px; 
border-radius: 10px; 
font-size: 20px; 
position: fixed; 
} 

js代码:

/** 
 * 
 */ 
    var checkEqual = false;//Avoid repetition calcu 
    var opFlag = false; //Check repetition add operation 
    var upText = document.getElementById("upText"); 
    var cal = document.getElementById("cal").style; 
    var downText = document.getElementById("downText"); 
     
    function show() { 
      cal.display = "block"; 
    } 
     
    function hide() { 
      cal.display = "none"; 
    } 
     
    function clearAllText() { 
      upText.value = ""; 
      downText.value = "0"; 
      opFlag = false; 
      checkEqual = false; 
    } 
     
    function oppositeOp(){ 
      downText.value = -downText.value;     
    } 
     
    function deleteOneDigit() { 
      downText.value = downText.value.substring(0, downText.value.length - 1); 
      if (downText.value == "" || (downText.value.charAt(0) == "-" && downText.value.charAt(1) == "")) { 
        downText.value = "0"; 
        return downText.value; 
      } 
      return downText.value; 
    } 
     
    function clickNum(num) { 
      if(num == ".") {         
        checkIfAddPoint(num); 
      } else { 
        checkIfAddNum(num); 
      } 
      checkEqual = false; 
    } 
     
    function checkIfAddPoint(num) { 
      if((num=="." && downText.value == "0") || opFlag == true) { 
        downText.value="0."; 
        opFlag = false; 
      } else if(num == "." && downText.value.indexOf(".") > -1) { 
        downText.value; 
      } else { 
        downText.value += num; 
      } 
    } 
     
    function checkIfAddNum(num) { 
       if((num != "." && downText.value == "0" && downText.value[1] != ".")  
           || opFlag == true  
           || downText.value == "Infinity" 
           || checkEqual == true) { 
        downText.value = num; 
        opFlag = false; 
      } else { 
        downText.value += num; 
      } 
    } 
     
    function clickOperation(op){ 
      checkEqual = false; 
      downText.value = checkdownTextValid(downText.value); 
      downText.value = checkZero(upText.value,downText.value); 
      switch(op){ 
      case "+":{    
        upText.value = appendupTextValue(upText.value,downText.value,"+"); 
        opFlag = true; 
       }break; 
      case "-":{ 
        upText.value = appendupTextValue(upText.value,downText.value,"-"); 
        opFlag = true; 
       }break; 
      case "x":{ 
        upText.value = appendupTextValue(upText.value,downText.value,"*"); 
        opFlag = true; 
       }break; 
      case "/":{  
        upText.value = appendupTextValue(upText.value,downText.value,"/"); 
        opFlag = true; 
       }break; 
      } 
    } 
     
    function checkdownTextValid(downText){ 
      if(downText.charAt(downText.length-1) == "."){ 
        return downText.substring(0,downText.length-1); 
      }  
      return downText; 
    } 
     
    function checkZero(upText,downText){ 
      if(upText.charAt(upText.length-1) == "/" && downText == "0"){ 
        return "Error"; 
      } 
      return downText; 
    } 
     
    function appendupTextValue(oldvalue,newvalue,operation){ 
      if(oldvalue == ""){ 
         return oldvalue = newvalue+operation; 
      } else if(opFlag!=true){ 
         return oldvaluee = oldvalue+newvalue+operation;  
      } else{ 
        return oldvalue.substring(0, oldvalue.length-1)+operation; 
      } 
    } 
     
    function calcu() { 
      if(!checkEqual){   
      downText.value = eval(upText.value+downText.value); 
      upText.value = ""; 
      checkEqual = true; 
      } 
    } 
     
    window.document.onkeydown = chooseKey; 
    function chooseKey(evt){ 
      if(evt.keyCode == 13){alert("=");} 
      else if(evt.keyCode == 8){deleteOneDigit();} 
      else if(evt.keyCode == 27){clearAllText();} 
      else if(evt.keyCode == 48){clickNum('0');} 
      else if(evt.keyCode == 49){clickNum('1');} 
      else if(evt.keyCode == 50){clickNum('2');} 
      else if(evt.keyCode == 51){clickNum('3');} 
      else if(evt.keyCode == 52){clickNum('4');} 
      else if(evt.keyCode == 53){clickNum('5');} 
      else if(evt.keyCode == 54){clickNum('6');} 
      else if(evt.keyCode == 55){clickNum('7');} 
      else if(evt.keyCode == 56){clickNum('8');} 
      else if(evt.keyCode == 57){clickNum('9');} 
      else if(evt.keyCode == 96){clickNum('0');} 
      else if(evt.keyCode == 97){clickNum('1');} 
      else if(evt.keyCode == 98){clickNum('2');} 
      else if(evt.keyCode == 99){clickNum('3');} 
      else if(evt.keyCode == 100){clickNum('4');} 
      else if(evt.keyCode == 101){clickNum('5');} 
      else if(evt.keyCode == 102){clickNum('6');} 
      else if(evt.keyCode == 103){clickNum('7');} 
      else if(evt.keyCode == 104){clickNum('8');} 
      else if(evt.keyCode == 105){clickNum('9');} 
      else if(evt.keyCode == 110){clickNum('.');} 
      else if(evt.keyCode == 106){clickOperation('x');} 
      else if(evt.keyCode == 107){clickOperation('+');} 
      else if(evt.keyCode == 111){clickOperation('÷');} 
      else if(evt.keyCode == 109){clickOperation('-');} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # 计算器  # javascript写的简单的计算器  # 内容很多  # 方法实用  # 推荐  # js实现简单计算器  # 简易js代码实现计算器操作  # html+js实现简单的计算器代码(加减乘除)  # 用JS写的简单的计算器实现代码  # js实现一个简易计算器  # js网页版计算器的简单实现  # 网页计算器 一个JS计算器  # 简易的JS计算器实现代码  # js版实现计算器功能  # 大家多多  # 更符合  # 键盘输入  # button  # deleteAll  # onclick  # readonly  # downText  # deleteOneDigit  # Add  # clickOperation  # clearAllText  # oppositeOp  # delOne  # maxlength  # calcuServlet  # method  # post  # cal  # form 


相关文章: 洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何通过NAT技术实现内网高效建站?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  已有域名和空间如何快速搭建网站?  建站之星安装后如何自定义网站颜色与字体?  开源网站制作软件,开源网站什么意思?  建站之星后台管理系统如何操作?  如何在香港服务器上快速搭建免备案网站?  如何用IIS7快速搭建并优化网站站点?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  高防服务器租用指南:配置选择与快速部署攻略  非常酷的网站设计制作软件,酷培ai教育官方网站?  ,怎么在广州志愿者网站注册?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  临沂网站制作企业,临沂第三中学官方网站?  实例解析angularjs的filter过滤器  如何通过服务器快速搭建网站?完整步骤解析  创业网站制作流程,创业网站可靠吗?  广州建站公司哪家好?十大优质服务商推荐  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何自定义建站之星网站的导航菜单样式?  建站之星如何通过成品分离优化网站效率?  如何在阿里云ECS服务器部署织梦CMS网站?  建站之星×万网:智能建站系统+自助建站平台一键生成  网站代码制作软件有哪些,如何生成自己网站的代码?    如何通过虚拟主机快速搭建个人网站?  如何快速打造个性化非模板自助建站?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  怀化网站制作公司,怀化新生儿上户网上办理流程?  太原网站制作公司有哪些,网约车营运证查询官网?  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何高效生成建站之星成品网站源码?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何配置FTP站点权限与安全设置?  如何访问已购建站主机并解决登录问题?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  网站制作需要会哪些技术,建立一个网站要花费多少?  如何通过商城免费建站系统源码自定义网站主题?  香港服务器选型指南:免备案配置与高效建站方案解析  建站之星导航配置指南:自助建站与SEO优化全解析  建站之星客服服务时间及联系方式如何?  临沂网站制作公司有哪些,临沂第四中学官网?  建站主机无法访问?如何排查域名与服务器问题  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  青浦网站制作公司有哪些,苹果官网发货地是哪里?  建站VPS能否同时实现高效与安全翻墙?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。