您好,欢迎来到源码搜藏!分享精神,快乐你我!提示:担心找不到本站?在百度搜索“源码搜藏”,网址永远不丢失!
  • 首 页
  • 在线工具
  • 当前位置:首页 > 网页特效 > 计算转换 >

    jQuery实现网页计算器

    时间:2014-06-11 17:59 来源:互联网 作者:源码搜藏 浏览:收藏 挑错 推荐 打印

    运行代码保存代码复制代码 提示:您可以先修改部分代码再运行,保存代码功能在Firefox下无效。
    • jQuery编写实现的网页计算器,日常练习的小东西,还有一些Bug,正在完美中。纯JS与jQuery的完美配合。
    • <script src="http://script2.pingan.com/app_js/ui30/js/jquery-1.3.2.js" language="javascript"></script>
      <script type="text/javascript">
      $(function(){
              var countSize;
              
              //数字按钮
              $("#buttons input.num").click(function(){
                      var numVal = $(this).val();
                      //判断初始值为0的时候,只有输入小数点才追加,否则覆盖
                      if( $("#display #down").text() == "0" ){
                              if( numVal == "." ){
                                      $("#display #down").append(numVal);
                              }else{
                                      $("#display #down").text(numVal);
                              }
                      }
                      //使输入框里只能有一个小数点
                      else if( $("#display #down").text().indexOf(".") > 0 ){
                              if( numVal == "." ){
                                      
                              }else{
                                      $("#display #down").append(numVal);
                              }
                      }else if( $("#display #down").text() == "" && numVal == "." ){
                              $("#display #down").text("0").append(numVal);
                      }
                      else{
                              $("#display #down").append(numVal);
                      }
              })
              
              //加减乘除按钮
              $("#buttons input.math").click(function(){
                      var upNum = $("#display #up .upNum").text();
                      var upMath = $("#display #up .countSize").text();
                      var downNum = $("#display #down").text();
                      if( upNum.length !== 0 && downNum.length !== 0 && upMath.length !== 0 ){
                              countSize = $("#display #up .countSize").text();
                              var upNum = $("#display #up .upNum").text();
                              var downNum = $("#display #down").text();
                              //如果a或b中有空值,则跳出此函数
                              if( upNum == "" || downNum == "" ){return false;}
                              var resultNum = count[countSize](upNum,downNum);
                              $("#display #up .upNum").text(resultNum);
                              countSize = $(this).val();
                              $("#display #up .countSize").text(countSize);
                              $("#display #down").text("");
                      }else{
                              countSize = $(this).val();
                              $("#display #up")
                                      .text(downNum)
                                      .wrapInner('<span class="upNum" /></span>')
                                      .append('<span class="countSize">' + countSize + '</span>');
                              $("#display #down").text("");
                      }
              })
              
              //等于按钮
              $("#buttons input.equal").click(function(){
                      var upNum = $("#display #up .upNum").text();
                      var downNum = $("#display #down").text();
                      //如果a或b中有空值,则跳出此函数
                      if( upNum == "" || downNum == "" ){return false;}
                      var resultNum = count[countSize](upNum,downNum);
                      $("#display #down").text(resultNum);
                      $("#display #up").text("");
              })
              
              //重置按钮
              $("#buttons input.clearDisplay").click(function(){
                      $("#display #up").text("");
                      $("#display #down").text("0");
              })
              
              //加减乘除的方法
              var count = {
                      '+': function(a,b){return accAdd(a,b);},
                      '-': function(a,b){return accSub(a,b);},
                      '*': function(a,b){return accMul(a,b);},
                      '/': function(a,b){return accDiv(a,b);}
              }
              
              /* ---------------- JS浮点数运算重置 ---------------- */
              
              //加法函数
              //调用:accAdd(arg1,arg2)
              //返回值:arg1加上arg2的精确结果
              function accAdd(arg1,arg2){
                      var r1,r2,m;
                      try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
                      try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
                      m=Math.pow(10,Math.max(r1,r2));
                      return (arg1*m+arg2*m)/m;
              }
              
              //减法函数
              //调用:accSub(arg1,arg2)
              //返回值:arg1减去arg2的精确结果
              function accSub(arg1,arg2){
                       var r1,r2,m,n;
                       try{r1=arg2.toString().split(".")[1].length}catch(e){r1=0}
                       try{r2=arg1.toString().split(".")[1].length}catch(e){r2=0}
                       m=Math.pow(10,Math.max(r1,r2));
                       //last modify by deeka
                       //动态控制精度长度
                       n=(r1>=r2)?r1:r2;
                       return ((arg1*m-arg2*m)/m).toFixed(n);
              }
              
              //乘法函数
              //调用:accMul(arg1,arg2)
              //返回值:arg1乘以arg2的精确结果
              function accMul(arg1,arg2)
              {
                      var m=0,s1=arg1.toString(),s2=arg2.toString();
                      try{m+=s1.split(".")[1].length}catch(e){}
                      try{m+=s2.split(".")[1].length}catch(e){}
                      return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
              }
              
              //除法函数
              //调用:accDiv(arg1,arg2)
              //返回值:arg1除以arg2的精确结果
              function accDiv(arg1,arg2){
                      var t1=0,t2=0,r1,r2;
                      try{t1=arg1.toString().split(".")[1].length}catch(e){}
                      try{t2=arg2.toString().split(".")[1].length}catch(e){}
                      with(Math){
                              r1=Number(arg1.toString().replace(".",""));
                              r2=Number(arg2.toString().replace(".",""));
                              return (r1/r2)*pow(10,t2-t1);
                      }
              }
       
      })
      </script>
    jQuery实现网页计算器由源码搜藏网整理,转载请注明出处http://www.codesocang.com/texiao/jisuanzhuanhuan/9094.html
    标签:网站源码
    下一篇:没有了