当前位置:首页 > 网页特效 > 计算转换 >

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>
由源码搜藏网整理,转载请注明出处https://www.codesocang.com/tx-jisuanzhuanhuan/9094.html
下一篇:没有了

计算转换下载排行

最新文章