继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

使用event.target实现简单的网页版计算器

Lemon156
关注TA
已关注
手记 2
粉丝 18
获赞 42

一次偶然的机会使用了手机上自带的计算器,对手机上的计算器感兴趣,想用已学的知识在网页上实现,一直想不出怎样用简单的方式去获取按键值的思绪,偶然间在其他练习上使用了event.target,便开始研究event.target的使用,最后发现使用event.target.value就能完成这功能,最后用简单的代码通过按键的点击实现简单的四则运算计算器。
完成之后的样子
结果也可以用科学计数法显示
虽然将我想要的计算器实现了,但其中还有许多地方需要改善,我会继续完善它的……
以下是一些关键的代码,完整的代码请点击这里

html代码

    <div class="cal_box">
        <table id="cal_box" >
            <tr>
                <td colspan="4">            
                    <textarea id="display"disabled="disabled" placeholder="calculator by lemon156"></textarea></td>
            </tr>

            <tr>
                <td><input type="button" value="AC" class="cl"></td>
                <td><input type="button" value="/" class="sym"></td>
                <td><input type="button" value="*" class="sym"></td>
                <td><input type="button" value="-" class="sym"></td>
            </tr>

            <tr>
                <td><input type="button" value="7" class="btn"></td>
                <td><input type="button" value="8" class="btn"></td>
                <td><input type="button" value="9" class="btn"></td>
                <td rowspan="2"><input type="button" value="+" class="sym" style="height:120px"></td>
            </tr>

            <tr>
                <td><input type="button" value="4" class="btn"></td>
                <td><input type="button" value="5" class="btn"></td>
                <td><input type="button" value="6" class="btn"></td>
            </tr>

            <tr>
                <td><input type="button" value="1" class="btn"></td>
                <td><input type="button" value="2" class="btn"></td>
                <td><input type="button" value="3" class="btn"></td>
                <td rowspan="2"><input type="button" value="=" class="eql" style="height:120px"></td>
            </tr>

            <tr>
                <td colspan="2"><input type="button" value="0" class="btn" style="width:140px"></td>
                <td><input type="button" value="." class="btn"></td>
            </tr>
        </table>
        <span>----lemon156----</span>
    </div>

css代码

*{
    margin: 0;
    padding: 0;
}
.cal_box{
    width: 340px;
    height: 550px;
    margin: 100px auto;
    border: 1px solid #888;
    box-shadow: 0 0 40px #ccc;
}
.cal_box textarea{
    width: 310px;
    height: 120px;
    margin: 10px;
    padding-top: 15px;
    text-indent: 1em;
    font-size: 24px;
    overflow: hidden;
    resize:none;
}
.cal_box input{
    width: 60px;
    height: 50px;
    margin: 10px;
    font-size: 18px;

}
.cal_box span{
    text-align: center;
    width: 200px;
    display: block;
    margin: 0 auto;
    font-size: 18px;
    color: #ccc;
}

js代码

var cal_box=document.getElementById('cal_box'),
    display=document.getElementById('display'),

    cal_result="",//存放运算结果
    list1="",   //存放输入的第一个值
    list2="",   //存放第二个值
    num1=0,     //第一个值
    num2=0,     //第二个值
    sym="",     //运算符号
    eql="",     //等于号           
    flag=false;

document.addEventListener('click',function(e){
    var target=e.target;
    //输入第一个值
    if (!flag) {
        if(target.className=='btn') {           
            list1+=target.value;
            num1=parseFloat(list1);
            display.innerHTML=num1;
        }
    };
    //输入运算符号
    if(target.className=='sym') {
        flag=true;
        sym=target.value;
        display.innerHTML=num1+sym;                     
    };

    //输入第二个值
    if(flag){   //如果按了运算符号的键就输入第二个数
        if (target.className=='btn') {

            list2+=target.value;
            num2=parseFloat(list2);
            display.innerHTML=num1+sym+num2;

        };
    }
    //进行计算并输出结果
    if (target.className=='eql') {  //判断是否是按了等于键
        eql=target.value;
        flag=false;
        switch(sym){
            case '/': cal_result=parseFloat(num1/num2);break;
            case '*': cal_result=parseFloat(num1*num2);break;
            case '-': cal_result=parseFloat(num1-num2);break;
            case '+': cal_result=parseFloat(num1+num2);break;
        }
        display.innerHTML=num1+sym+num2+'\n\n\t'+eql+cal_result;//显示输出结果
        list1="";//每次运算完,再次输入时自动清屏,
        list2="";//这两个一定要清空,否则需要按清空键才能再次输入
    };
    //清屏
    if (target.className=='cl') {
        display.innerHTML="";   //将显示屏清空
        flag=false;     
        list1="";   //输入按键但没有进行运算,按清屏键后不保留之前输入的值
        list2="";

    };

})
打开App,阅读手记
10人推荐
发表评论
随时随地看视频慕课网APP

热门评论

        减法貌似有问题

查看全部评论