博主信息
博文 34
粉丝 0
评论 0
访问量 39336
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
编程: 使用js完成一个功能相对完整的计算器案例
Belifforz的博客
原创
872人浏览过
  1. 使用js完成一个功能相对完整的计算器

实例

<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <meta charset="UTF-8">
    <title>在线简易计算器</title>
</head>
<style>
 table{
        width:300px;
 height:400px;
 margin:100px auto;
 border-collapse: collapse;
 }
    table tr td{
        border:1px solid black;
 }
    table tr td a{
        text-decoration-line:  none;
 width:50px;
 height:50px;
 line-height: 50px;
 margin:0 auto;
 text-align: center;
 display: block;
 border-radius: 100%;
 border: 1px solid black;
 background-color: coral;
 color:white;
 }
    table tr td p{
        padding:5px;
 font-size: 1.5rem;
 text-align: center;
 }
    caption{
        padding-bottom: 20px;
 }
    span{
        padding :20px;
 }
</style>
<body>
<div>
    <table>
        <caption>简易计算器
 <span><button >清空</button></span>
        </caption><tr>
            <td colspan="4" id="result" style="height:100px"><p></p></td>
        </tr>
        <tr>
            <td><a href="">7</a></td>
            <td><a href="">8</a></td>
            <td><a href="">9</a></td>
            <td><a href="">÷</a></td>
        </tr>
        <tr>
            <td><a href="">4</a></td>
            <td><a href="">5</a></td>
            <td><a href="">6</a></td>
            <td><a href="">×</a></td>
        </tr>
        <tr>
            <td><a href="">1</a></td>
            <td><a href="">2</a></td>
            <td><a href="">3</a></td>
            <td><a href="">-</a></td>
        </tr>
        <tr>
            <td><a href="">.</a></td>
            <td><a href="">0</a></td>
            <td><a href="">+</a></td>
            <td><a href="">=</a></td>
        </tr>
    </table>
</div>
</body>
<script>
 let Num = document.getElementsByTagName('a');//获取所有A标签
 let res =  document.getElementsByTagName('p')[0];
 let data1 = '';
 let data2 = '';
 let opt ='';
 let result ='';
 let hasPoint = false;
 let lastkey = '';
 let button =document.getElementsByTagName('button')[0];
 button.onclick=function(){
        res.innerHTML='';
 data1 = '';
 data2 = '';
  hasPoint = false;
 }
    function calculate(opt){//进行运算
 switch (opt) {
            case '+':
                result = parseFloat(data1) + parseFloat(data2);
 break;
 case '-':
                result = parseFloat(data1) - parseFloat(data2);
 break;
 case '×':
                result = parseFloat(data1) * parseFloat(data2);
 break;
 case "÷":
                if (parseFloat(data2) === 0) {
                    alert('除数不能为零');
 return false;
 } else {
                    result = parseFloat(data1) / parseFloat(data2);
 // 四舍五入,仅保留二位小数
 result = Math.round(result * 100) / 100;
 }
                break;
 }
        res.innerHTML=data1+opt+data2+'='+result;

 }

    for(let i=0;i<Num.length;i++)
    {
        Num[i].onclick = function () {
            let key = Num[i].innerHTML;
 console.log('上次的键:',lastkey);
 if(lastkey ==='='){
                res.innerHTML = '';
 data1 = '';
 data2 = '';
 opt ='';
 lastkey = '';
 }
            if (!isNaN(key) || key === '.')//如果输入数字或者 小数点
 {
                if (hasPoint && key === '.') {//如果前一个输入的是.,再输入. 会直接返回,不做改变
 console.log('已存在小数点');
 return false;
 } else if (isNaN(res.innerHTML)) {
                    console.log(key,'3');
 if(key === '.'){
                        hasPoint = true;
 }
                    data2 += key;
 res.innerHTML += key;
 lastkey = key;
 return false;
 } else {
                    if(key === '.'){
                        hasPoint = true;
 }
                    console.log(key,'4');
 res.innerHTML += key;
 lastkey = key;
 return false;
 }
            }
            else{//如果输入加减乘除
 if(isNaN(res.innerHTML)){//如果结果中已有加减乘除
 if(key==='='){
                        calculate(opt);
 lastkey = key;
 return false;
 }else if(isNaN(lastkey)){
                        opt = key;
 hasPoint = false;
 res.innerHTML = data1+opt;
 return false;
 }else{
                        console.log('已清除上次键');
 return false;
 }

                }else{
                    data1 += res.innerHTML;
 opt = key;
 hasPoint = false;
 res.innerHTML += key;
 lastkey = key;
 return false;
 }

            }
            }


    }
</script>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学