百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> js如何实现计算器功能?js实现计算器功能的教程
分享文章到:

js如何实现计算器功能?js实现计算器功能的教程

发布时间:01/15 来源: 浏览: 关键词:
这篇文章介绍了js如何实现计算器功能的实例代码,简单易懂,适合初学者上手学习,有兴趣的同学快试试吧

该计算器功能:

1.校验:小数点,重复计算,以及大量更符合用户体验的操作。

2.能够从键盘输入。

效果图:

html代码:

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

css代码:

@CHARSET"UTF-8";
.button {
  width:73px;
  height:50px;
  margin-bottom:5px;
  border:1pxsolid#ddd;
  border-radius:1px;
  font-weight:bold;
  color:#1e395b;
  background:aqua;
  font-size:20px;
  border-radius:3px;
}
.text {
  width:300px;
  border:1pxsolid#c2c2c2;
  height:50px;
  border-radius:5px;
  font-size:24px;
  text-align:right;
  background:#ffffff;
  margin-top:10px;
  margin-bottom:10px;
}
.textShow{
  width:300px;
  border:1pxsolid#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:2pxsolid#99ccff;
margin:100pxauto;
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代码:

/**
 *
 */
    varcheckEqual =false;//Avoid repetition calcu
    varopFlag =false;//Check repetition add operation
    varupText = document.getElementById("upText");
    varcal = document.getElementById("cal").style;
    vardownText = document.getElementById("downText");
      
    functionshow() {
      cal.display ="block";
    }
      
    functionhide() {
      cal.display ="none";
    }
      
    functionclearAllText() {
      upText.value ="";
      downText.value ="0";
      opFlag =false;
      checkEqual =false;
    }
      
    functionoppositeOp(){
      downText.value = -downText.value;    
    }
      
    functiondeleteOneDigit() {
      downText.value = downText.value.substring(0, downText.value.length - 1);
      if(downText.value ==""|| (downText.value.charAt(0) =="-"&& downText.value.charAt(1) =="")) {
        downText.value ="0";
        returndownText.value;
      }
      returndownText.value;
    }
      
    functionclickNum(num) {
      if(num ==".") {        
        checkIfAddPoint(num);
      }else{
        checkIfAddNum(num);
      }
      checkEqual =false;
    }
      
    functioncheckIfAddPoint(num) {
      if((num=="."&& downText.value =="0") || opFlag ==true) {
        downText.value="0.";
        opFlag =false;
      }elseif(num =="."&& downText.value.indexOf(".") > -1) {
        downText.value;
      }else{
        downText.value += num;
      }
    }
      
    functioncheckIfAddNum(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;
      }
    }
      
    functionclickOperation(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;
      }
    }
      
    functioncheckdownTextValid(downText){
      if(downText.charAt(downText.length-1) =="."){
        returndownText.substring(0,downText.length-1);
      } 
      returndownText;
    }
      
    functioncheckZero(upText,downText){
      if(upText.charAt(upText.length-1) =="/"&& downText =="0"){
        return"Error";
      }
      returndownText;
    }
      
    functionappendupTextValue(oldvalue,newvalue,operation){
      if(oldvalue ==""){
         returnoldvalue = newvalue+operation;
      }elseif(opFlag!=true){
         returnoldvaluee = oldvalue+newvalue+operation; 
      }else{
        returnoldvalue.substring(0, oldvalue.length-1)+operation;
      }
    }
      
    functioncalcu() {
      if(!checkEqual){  
      downText.value = eval(upText.value+downText.value);
      upText.value ="";
      checkEqual =true;
      }
    }
      
    window.document.onkeydown = chooseKey;
    functionchooseKey(evt){
      if(evt.keyCode == 13){alert("=");}
      elseif(evt.keyCode == 8){deleteOneDigit();}
      elseif(evt.keyCode == 27){clearAllText();}
      elseif(evt.keyCode == 48){clickNum('0');}
      elseif(evt.keyCode == 49){clickNum('1');}
      elseif(evt.keyCode == 50){clickNum('2');}
      elseif(evt.keyCode == 51){clickNum('3');}
      elseif(evt.keyCode == 52){clickNum('4');}
      elseif(evt.keyCode == 53){clickNum('5');}
      elseif(evt.keyCode == 54){clickNum('6');}
      elseif(evt.keyCode == 55){clickNum('7');}
      elseif(evt.keyCode == 56){clickNum('8');}
      elseif(evt.keyCode == 57){clickNum('9');}
      elseif(evt.keyCode == 96){clickNum('0');}
      elseif(evt.keyCode == 97){clickNum('1');}
      elseif(evt.keyCode == 98){clickNum('2');}
      elseif(evt.keyCode == 99){clickNum('3');}
      elseif(evt.keyCode == 100){clickNum('4');}
      elseif(evt.keyCode == 101){clickNum('5');}
      elseif(evt.keyCode == 102){clickNum('6');}
      elseif(evt.keyCode == 103){clickNum('7');}
      elseif(evt.keyCode == 104){clickNum('8');}
      elseif(evt.keyCode == 105){clickNum('9');}
      elseif(evt.keyCode == 110){clickNum('.');}
      elseif(evt.keyCode == 106){clickOperation('x');}
      elseif(evt.keyCode == 107){clickOperation('+');}
      elseif(evt.keyCode == 111){clickOperation('÷');}
      elseif(evt.keyCode == 109){clickOperation('-');}

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有4人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板