用HTML,JS,CSS设计一个简单(包含加、减、乘、除功能)的计算器

用HTML,JS,CSS设计一个简单(包含加、减、乘、除功能)的计算器

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计算器设计</title>
    <link rel="stylesheet" type="text/css" href="CSS/index.css" />
</head>
<body>
<div id="main">
        <div id="input_text">
            <input type="text" id="content">
        </div>
        <div id="input_button">
            <input type="button" class="same_size" value="1">
            <input type="button" class="same_size" value="2">
            <input type="button" class="same_size" value="3">
            <input type="button" class="same_size" value="Back">
            <input type="button" class="same_size" value="C">
            <input type="button" class="same_size" value="4">
            <input type="button" class="same_size" value="5">
            <input type="button" class="same_size" value="6">
            <input type="button" class="same_size" value="+">
            <input type="button" class="same_size" value="-">
            <input type="button" class="same_size" value="7">
            <input type="button" class="same_size" value="8">
            <input type="button" class="same_size" value="9">
            <input type="button" class="same_size" value="*">
            <input type="button" class="same_size" value="/">
            <input type="button" class="same_size" value="附加">
            <input type="button" class="same_size" value="0">
            <input type="button" class="same_size" value=".">
            <input type="button" class="equal_size" value="=">
        </div>
</div>
</body>
<script type="text/javascript" src="js/index.js"></script>
</html>

JS代码:

var b1 = document.getElementById("content");
var b2 = document.getElementById("input_button");
b2.addEventListener("click", btn_click)
function btn_click(e) {
    //清空b1.value
    if (b1.value.indexOf("=") > -1 || b1.value=="ERROR!" || b1.value=="该功能未开放!")
        b1.value="";
    //输入"="号的时候计算结果
    if (e.target.value=="="){
        // var ans=eval(b1.value); //可以直接使用eval(string)来计算结果,string为输入的等式字符串
        var arr=b1.value.split(" ");
        var ans=[];
        var i=0;
        while (i<arr.length){
            if (arr[i]=="")
                i++;
            else if (arr[i]=="+"){
                ans.push(arr[i+1]);
                i+=2;
            }
            else if (arr[i]=="-"){
                ans.push(-arr[i+1]);
                i+=2;
            }
            else if (arr[i]=="*"){
                var a;
                var b=ans.pop();
                if(arr[i+1]=="-"){
                    a=-arr[i+2];
                    i+=3;
                }
                else {
                    a=arr[i+1];
                    i+=2;
                }
                // console.log("a,b:",a,b)
                ans.push(b*a);
            }
            else if (arr[i]=="/"){
                var a;
                var b=ans.pop();
                if (arr[i+1]=="0"){
                    b1.value="ERROR!";
                    return;
                }
                else if(arr[i+1]=="-"){
                    a=-arr[i+2];
                    i+=3;
                }
                else {
                    a=arr[i+1];
                    i+=2;
                }
                ans.push(b/a);
            }
            else {
                ans.push(arr[i]);
                i++;
            }

        }
        // console.log(ans);
        var fin_ans=parseFloat(ans[0]);
        for (i=1;i<ans.length;i++)
            fin_ans+=parseFloat(ans[i]);
        s=" "+e.target.value +" "+fin_ans;
        b1.value+=s;
    }
    //输入"+"号时加入b1.value字符串
    else if(e.target.value=="+"){
        s=" "+e.target.value +" ";
        b1.value+=s;
    }
    //输入"-"号时加入b1.value字符串
    else if(e.target.value=="-"){
        s=" "+e.target.value +" ";
        b1.value+=s;
    }
    //输入"*"号时加入b1.value字符串
    else if(e.target.value=="*"){
        s=" "+e.target.value +" ";
        b1.value+=s;
    }
    //输入"/"号时加入b1.value字符串
    else if(e.target.value=="/"){
        s=" "+e.target.value +" ";
        b1.value+=s;
    }
    //输入"Back"时回退一步
    else if(e.target.value=="Back"){
        if(b1.value[b1.value.length-1]==" " && b1.value[b1.value.length-3]==" ")
            b1.value=b1.value.slice(0,b1.value.length-3);
        else
            b1.value=b1.value.slice(0,b1.value.length-1);
    }
    //输入"附加",该功能未开放
    else if (e.target.value=="附加"){
        b1.value="该功能未开放!";
    }
    //输入"C"时清空b1.value
    else if(e.target.value=="C"){
        b1.value="";
    }
    //鼠标点到其他空白地方时b1.value不变
    else if (e.target.value==undefined){
        b1.value=b1.value;
    }
    //输入数字时加入b1.value字符串
    else{
        b1.value+=e.target.value;
    }
}

CSS代码:

#main{
    border: 1px solid black;
    margin: 1vw auto;
    width: 45vw;
    height: 30vw;
}

#input_text{
    /*border: 1px solid red;*/
    margin: 3% 4%;
    width: 92%;
    height: 14%;
    display: flex;
}
 #input_button{
     /*border: 1px solid black;*/
     margin: 3% 2%;
     width: 96%;
     height: 74%;
     display: flex;
     flex-wrap: wrap;
}

#input_text #content{
    flex: auto;
    margin: 0;
    width: 100%;
    /*height: 65%;*/
    font-size: 2vw;
}
#input_button .same_size{
    flex: auto;
    margin: 1%;
    width: 18%;
    height: 20%;
    font-size: 1.5vw;
}
#input_button .equal_size{
    flex: auto;
    margin: 1%;
    width: 38%;
    height: 20%;
    font-size: 1.5vw;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值