简单网页计算器

简单网页计算器

CSS文件

.content{
    position: relative;
    margin: 100px auto;
    padding: 0px;
    border:1px solid rgb(221, 220, 220);
    width:500px;
    border-radius: 3px;
    top:-50px;
}
.display{
    position: relative;
    height:40px;
    margin-left: 10px;
    font-size: 25px;
}
#content{
    overflow: hidden;
}
.ul_style{
    position: relative;
    list-style-type: none;
}
.button{
    position: absolute;
    margin: 0px auto;
    width:480px;
    
}
.color_1{
    color:orangered;
    background-color: rgba(238, 237, 237, 0.377)  ;
}
table{
    width:500px;
    border:1px solid rgb(219, 219, 219);
}
td{
    width:120px;
    height:40px;
    border:1px solid rgb(219, 219, 219);
    text-align: center;
    font-size: 25px;
    font-family: "宋体"; 
}
td:hover{
    border: 1px solid rgb(175, 175, 175);
}
#content1{
    word-wrap: break-word;
    word-break: break-all;
    overflow: hidden;
}
#content1{
    word-wrap: break-word;
    word-break: break-all;
    overflow: hidden;
}

html文档

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="index.css">
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
    <script src="index.js"></script>
</head>
<body>
    <div class="content">
        <div class="display">
          <p id = "content1"  style="border-bottom:1px solid rgb(219, 219, 219);">0</p>
        </div>
        <div class="display">
                <p id = "content">0</p>
        </div>
    <div class="button">
        <table>
            <tr>
                <td class="color_1" onclick="caculates('^')">^</td>
                <td class="color_1" onclick="math('√')">√</td>
                <td class="color_1" onclick="back()">del</td>
                <td class="color_1" onclick="zero()">C</td>
            </tr>
            <tr>
                <td class="color_1" onclick="math('sin')">sin</td>
                <td class="color_1" onclick="math('cos')">cos</td>
                <td class="color_1" onclick="math('tan')">tan</td>
                <td class="color_1" onclick="Mzero()">+/-</td>
            </tr>
            <tr>
                <td onclick="command('7')">7</td>
                <td onclick="command('8')">8</td>
                <td onclick="command('9')">9</td>
                <td  class="color_1" onclick="caculates('÷')">÷</td>
            </tr>
            <tr>
                <td onclick="command('4')">4</td>
                <td onclick="command('5')">5</td>
                <td onclick="command('6')">6</td>
                <td  class="color_1" onclick="caculates('x')">x</td>
            </tr>
            <tr>
                <td onclick="command('1')">1</td>
                <td onclick="command('2')">2</td>
                <td onclick="command('3')">3</td>
                <td  class="color_1" onclick="caculates('-')">-</td>
            </tr>
            <tr>
                <td onclick="command('0')">0</td>
                <td onclick="dot()">.</td>
                <td onclick="equal()">=</td>
                <td  class="color_1" onclick="caculates('+')">+</td>
            </tr>
        </table>
    </div>        
    </div>
</body>

js文件

var num1 = 0,result = 0;
var show = "";
var caculate = "";//储存运算符号
var operate = 1;//控制运算符号
var operate_t = 0;//防止在未输入数字出现运算符号
var caculate_t = 0;//判断运算状态
var quit = 1;//防止重复
var caculate_time = 0;//运算此时
var equals = -1;//判断是否进行运算获得答案
var scan = 0;//输入判断
function command(num){//输入函数
    if(scan==0)
    {
        equals = 0;
        var str = document.getElementById('content').innerHTML;
        str = (str!="0")?((operate==0)? str : ""):"";
        str = str + num; 
        document.getElementById('content').innerHTML=str;
        show = show=='0'? "" : show;
        show+=num;
        document.getElementById('content1').innerHTML = show;
        operate = 0;
        operate_t = 1;
        if(quit==2)
        {
            quit = 3;
        }
    }
    
}
function dot(){
    if(operate_t==1)
    {
        var str = document.getElementById('content').innerHTML;
        if(str.indexOf(".")==-1)
        {
            str +=".";
        }
        show = show.substr(0,show.length-str.length) + str;
        document.getElementById('content').innerHTML = str;
        document.getElementById('content1').innerHTML = show;
    }
}
function caculates(cacu){
    if((quit==1||quit==2)&&operate_t==1)//已输入两个数字后禁用运算符
    {
        scan = 0;
        caculate = cacu;
        if(caculate_time==0)//单次计算
        {
            if(caculate_t==0)
            {
                var str = document.getElementById('content').innerHTML;
                num1 = parseFloat(str);
            }
        }
        else if(caculate_time>0)//多次运算
        {
            var str = document.getElementById('content').innerHTML;
            num1 = (str==0)? result :(parseFloat(result.toString()+str));//
        }
        document.getElementById('content').innerHTML = "0";
        if(operate==0)//将运算符号显示在第一个显示面板中
        {
            show += cacu;
        }
        else if(operate==1)
        {
            show = show.substr(0,show.length-1) + cacu;
        }
        document.getElementById('content1').innerHTML = show;
        operate = 1;   
        quit = 2;//表明运算式中已存在运算符
        caculate_t=1;
    }
}
function zero(){//置零
    num1 = 0;
    result = 0;
    numshow = "0";
    show = "";
    caculate_time = 0;
    operate_t = 0;
    operate = 0;
    caculate_t = 0;
    equals = -1;
    document.getElementById("content").innerHTML = "0";
    document.getElementById('content1').innerHTML ="0";
}
function back(){//退格
    var str = document.getElementById('content').innerHTML;
    str = (str!="0")? str : "";
    show = show.substr(0,(show.length-str.length));
    str = str.substr(0,str.length-1);
    show = (str=="0")? show :(show+str);
    str = (str!="")? str : "0";
    show = (show!="")? show : "0";
    document.getElementById('content').innerHTML =str;
    document.getElementById('content1').innerHTML = show;
}
function equal()
{
    if(caculate_t == 1&&quit==3)//如果处于运算状态,且输入了两个运算数字
    {
        var num2 = parseFloat(document.getElementById('content').innerHTML);
        console.log(num1);
        console.log(num2);
        switch (caculate){
            case "+":result = num1 + num2; break;
            case '-':result = num1 - num2; break;
            case 'x':result = num1 * num2; break;
            case '÷':
                if(num2==0)//判断除数是否为0
                {
                    document.getElementById('content1').innerHTML ="除数不能为0";
                    setTimeout(function(){zero()},1000);
                    return 0;
                }
                result = num1/num2;
            break;
            case '^':result = Math.pow(num1,num2); break;
        }
        show +="=" + result.toString();
        document.getElementById('content1').innerHTML =show;
        document.getElementById("content").innerHTML = "0";
        quit = 1;
        caculate_time+=1;
        caculate_t = 0;
        operate_t = 0;
        equals = 1;
        scan = 0;
    }
}
function math(cacu)//只需一个数字的运算
{
    if(operate_t==1)
    {
        var num = 0;
        var result_1 = "";
        if(caculate_time==0)
        {
            var str = document.getElementById('content').innerHTML;
            num = parseFloat(str);
        }
        else
        {
            num = result;
            result_1 = result.toString();
        }
        result_1 = (result_1=="")? show : result_1;  
        switch(cacu){
            case"√":
                    if(num<0)
                    {
                        document.getElementById('content1').innerHTML ="被开方数不能小于0";
                        setTimeout(function(){zero()},1000);
                        return 0;
                    }
                    result = Math.sqrt(num);
                                   
                    document.getElementById('content1').innerHTML =result_1 + "√=" + result.toString();
                    break;
            case"sin":result = Math.sin(num);
                    document.getElementById('content1').innerHTML ="sin" + result_1 + "=" + result.toString();
                    break;
            case"cos":result = Math.cos(num);
                    document.getElementById('content1').innerHTML ="cos" + result_1 + "=" + result.toString();
                    break;
            case"tan":
                    if(Math.cos(num)==0)//判断输入数是否有定义
                    {
                        document.getElementById('content1').innerHTML ="错误!tan在此数无定义!";
                        setTimeout(function(){zero()},1000);
                        return 0;
                    }
                    result = Math.tan(num);
                    document.getElementById('content1').innerHTML ="tan" + result_1 + "=" + result.toString();
                    break;
        }
        document.getElementById("content").innerHTML = "0";
        caculate_time+=1;
        caculate_t = 0;
        quit = 1;
        scan = 0;
    }
}
function Mzero()//取相反数
{
    if(equals==0)//判断是否有运算结果
    {
        var str =  document.getElementById('content').innerHTML;
        if(str.indexOf('-')==-1)
        {
            str = "-" + str;
        }
        else
        {
            str = str.substr(1,str.length);
        }
        document.getElementById('content').innerHTML = str;
        if(caculate_t==0)
        {
            show = (str.indexOf('-')==-1)?str :("("+str+")");
            document.getElementById('content1').innerHTML = show;
        }
        else
        {
            if(caculate_time==0)//是否进行多次运算
            {
                show = (str.indexOf('-')==-1)? str:(show.substr(0,show.length-str.length+1)+"("+str+")");
                document.getElementById('content1').innerHTML = show;
            }
        }
        scan = 1;
    }
    else if(equals==1)
    {
        scan = 1;
        var result_s = "";
        if(result.toString().indexOf('-')==-1)
        {
            result = parseFloat("-"+result.toString());
            result_s = "-" + result.toString();
        }
        else
        {
            result_s = result.toString().substr(1,result.toString().length);
            result = parseFloat(result_s);
            
            
        }
        document.getElementById('content1').innerHTML = result_s;
        show = result_s;
        caculate_t = 0;
        quit = 1;
        operate_t = 1;
    }
}