JS实现简单的计算器效果

JS实现简单的计算器效果
完成后效果如下,可以进行简单的计算和连续计算
在这里插入图片描述
先讲下思路,第一步肯定是要把HTML和CSS给做好,直接上代码

    body {
        font-size:12px;
        font-family:Arial, Georgia, "Times New Roman", Times, serif;
        color:#555;
        text-align:center;
        background-color:#e2e2e2;
    }
    h6{
        margin:0;
        font-size:12px;
    }
    #calculator {
        width:240px;
        height:auto;
        overflow:hidden;
        margin:10px auto;
        border:#fff 1px solid;
        padding-bottom:10px;
        background-color:#f2f2f2;
    }
    #calculator div {
        clear:both;
    }
    #calculator ul{
        padding:0;
        margin:5px 14px;
        border:#fff 1px solid;
        height:auto;
        overflow:hidden
    }
    #calculator li{
        list-style:none;
        float:left;
        width:32px;
        height:32px;
        margin:5px;
        display:inline;
        line-height:32px;
        font-size:14px;
        background-color:#eaeaea;
    }
    #calculator li.tool{
        background-color:#e2e2e2;
    }
    #calculator li:hover{
        background-color:#f9f9f9;
        cursor:pointer;
    }
    #calculator li:active{
        background-color:#fc0;
        cursor:pointer;
    }
    #calculator li.tool:active{
        background-color:#d8e8ff;
        cursor:pointer;
    }
    #calcu-head {
        text-align:left;
        padding:10px 15px 5px;
    }
    span.imyeah {
        float:right;
        color:#ccc;
    }
    span.imyeah a{
        color:#ccc;
    }
    .screen{
        width:200px;
        height:24px;
        line-height:24px;
        padding:4px;
        border:#e6e6e6 1px solid;
        border-bottom:#f2f2f2 1px solid;
        border-right:#f2f2f2 1px solid;
        margin:10px auto;
        direction:ltr;
        text-align:right;
        font-size:16px;
        color:#999;
    }
    #calcu-foot{
        text-align:left;
        padding:10px 15px 5px;
        height:auto;
        overflow:hidden;
    }
    span#note{
        float:left;
        width:210px;
        height:auto;
        overflow:hidden;
        color:red;
    }
    span.welcome{
        clear:both;
        color:#999;
    }
    span.welcome a{
        float:right;
        color:#999;
    }


    <div id="calculator">
            <div id="calcu-head"><h6>简单的计算器</h6></div>
            <div id="calcu-screen">
                <input type="text" name="numScreen" class="screen" value="0" onfocus="this.blur();" />
            </div>
            <div id="btn">
                <ul>
                    <li>7</li>
                    <li>8</li>
                    <li>9</li>
                    <li class="tool">←</li>
                    <li class="tool">C</li>
                    <li>4</li>
                    <li>5</li>
                    <li>6</li>
                    <li class="tool">×</li>
                    <li class="tool">÷</li>
                    <li>1</li>
                    <li>2</li>
                    <li>3</li>
                    <li class="tool">+</li>
                    <li class="tool">-</li>
                    <li>0</li>
                    <li>00</li>
                    <li>.</li>
                    <li class="tool">%</li>
                    <li class="tool">=</li>
                </ul>
            </div>
        </div>

那么接下来开始正式的工作了, 先写一下每个按钮的点击事件,设置变量去获取运算符和它左右两边的数值,
并把点击的按钮里的信息放到显示框内
(function(){
for(var i = 0;i<oLi.length;i++)
{
oLi[i].index = i;
oLi[i].onclick = function(){
show += oLi[this.index].innerHTML;
if(!isNaN(show))
{
LeftNum = show;
}
else
{
if(oLi[this.index].className==‘tool’)
{
Symbol[0] = oLi[this.index].innerHTML;
}
else{
RightNum += oLi[this.index].innerHTML;
}
}
oInp.value = show;
}

    }
})()
这里函数表达式写好直接让它自执行 
接下来就是运算了,上面已经把运算符和它左右两边的数都保存好了,那就可以直接用一个switch来判断这个运算的类型,然后进行操作了,代码也是超级简单  具体是给表示等号的标签设置点击事件,然后判断类型,输出结果
 oLi[19].onclick = function(){
    switch(Symbol[0]){
        case "+":result = Number(LeftNum)+Number(RightNum);break;
        case "-":result = Number(LeftNum)-Number(RightNum);break;
        case "×":result = Number(LeftNum)*Number(RightNum);break;
        case "÷":result = Number(LeftNum)/Number(RightNum);break;
        case "%":result = Number(LeftNum)%Number(RightNum);break;
    }
    oInp.value = result;}
    这样基本的计算就做好了,但是只能进行一次,因为保存数据的变量此时都已使用了,要想进行连续运算第二次,只需要把第一次的结果当作第二次刚开始输入的数据就好了
     //连续运算的设置
    show = result;
    LeftNum = result;
    RightNum = "";
    Symbol[0] = "";
    将这几句放到等号的点击事件里面就OK了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值