计算器原生js

目录

1.HTML

2.CSS 

2.JS

4.资源

5.运行截图

6.下载连接

 7.注意事项


 

1.HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>计算器</title>
    <link rel="stylesheet" href="../css/calculator.css">
    <style>
        .calculator{
            width: 250px;
            height: 430px;
            margin: 100px auto;
            border: 1px #ccc solid;
        }
        h3{
            width: 100%;
            height: 50px;
            border-bottom: 1px #ccc solid;
        }
        h4{
            width: 100%;
            height: 30px;
            border-bottom: 1px #ccc solid;
        }
        .list{
            width: 100%;
            height: 350px;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-around;
            align-content: space-around;
        }
        .list li{
            width: 50px;
            height: 50px;
            line-height: 50px;
            text-align: center;
            border: 1px #ccc solid;
        }
    </style>
</head>
<body>
    <div class="calculator">
        <h3></h3>
        <h4></h4>
        <ul class="list">
            <!-- <li>AC</li>
            <li>%</li>
            <li>←</li>
            <li>÷</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>×</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>-</li>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>+</li>
            <li>00</li>
            <li>0</li>
            <li>.</li>
            <li>=</li>  -->
        </ul>
    </div>
</body>
</html>
<script src="../js/calculator.js"></script>
<script>
    let list = document.querySelector('.list');
    let h3 = document.querySelector('h3');
    let h4 = document.querySelector('h4');
    let listData = ['AC','%','←','÷',7,8,9,'×',4,5,6,'-',1,2,3,'+','00',0,'.',"="];
    listData.forEach(item => {
        let li = `<li>${item}</li>`;
        list.innerHTML+=li;
    });
    let li = list.querySelectorAll('li');
    list.addEventListener('click',(e)=>{
        let target = e.target;
        // 检查点击的目标是否是 li 元素
        if (target.tagName.toLowerCase() === 'li') {
            h3.innerHTML+=target.innerHTML;
            console.log(h3.innerHTML.slice(-2),'qqq');
            if(h3.innerHTML.slice(-2).match(/^[\+\-\×\÷\%]+$/)){
                console.log(h3.innerHTML);
                h3.innerHTML=h3.innerHTML.substring(0, h3.innerHTML.length - 2) + target.innerHTML;
            };
            if(target.innerHTML=='←'){
                let txt = h3.innerHTML;
                console.log(txt.length);
                h3.innerHTML=txt.substring(0, txt.length - 2);
                console.log(target,h3.innerHTML);
            }
            if(target.innerHTML=='AC'){
                h3.innerHTML='';
                h4.innerHTML='';
            }
            if(target.innerHTML=='='){
                let txt = h3.innerHTML.replace(/\u00F7/g, "/").replace(/\u00D7/g, "*");
                h3.innerHTML=h3.innerHTML.substring(0, txt.length - 1);
                let data = {
                    txt:txt.substring(0, txt.length - 1)
                };
                fetch("http://localhost:8080/api/calculator", {
                    method: "POST",
                    headers: {
                    'Content-Type': 'application/json', // 设置请求头的 Content-Type
                    },
                    body: JSON.stringify(data),
                }).then(response => response.json()).then(res => {
                    h4.innerHTML=res.answer;
                    console.log("res:", res);
                }).catch(err => {
                    console.log("err:", err);
                });
            }

            // 阻止事件冒泡
            e.stopPropagation(); 
        }
    });

</script>

2.CSS 

*{margin: 0;padding: 0;}
ul,li,ol{list-style-type: none;}
button{cursor: pointer;border: none;background: rgba(255, 255, 255, 1);}

2.JS

let list = document.querySelector('.list');
let h3 = document.querySelector('h3');
let h4 = document.querySelector('h4');
let listData = ['AC','%','←','÷',7,8,9,'×',4,5,6,'-',1,2,3,'+','00',0,'.',"="];
listData.forEach(item => {
    let li = `<li>${item}</li>`;
    list.innerHTML+=li;
});
let li = list.querySelectorAll('li');
list.addEventListener('click',(e)=>{
    let target = e.target;
    // 检查点击的目标是否是 li 元素
    if (target.tagName.toLowerCase() === 'li') {
        h3.innerHTML+=target.innerHTML;
        console.log(h3.innerHTML.slice(-2),'qqq');
        if(h3.innerHTML.slice(-2).match(/^[\+\-\×\÷\%]+$/)){
            console.log(h3.innerHTML);
            h3.innerHTML=h3.innerHTML.substring(0, h3.innerHTML.length - 2) + target.innerHTML;
        };
        if(target.innerHTML=='←'){
            let txt = h3.innerHTML;
            console.log(txt.length);
            h3.innerHTML=txt.substring(0, txt.length - 2);
            console.log(target,h3.innerHTML);
        }
        if(target.innerHTML=='AC'){
            h3.innerHTML='';
            h4.innerHTML='';
        }
        if(target.innerHTML=='='){
            let txt = h3.innerHTML.replace(/\u00F7/g, "/").replace(/\u00D7/g, "*");
            h3.innerHTML=h3.innerHTML.substring(0, txt.length - 1);
            let data = {
                txt:txt.substring(0, txt.length - 1)
            };
            fetch("http://localhost:8080/api/calculator", {
                method: "POST",
                headers: {
                'Content-Type': 'application/json', // 设置请求头的 Content-Type
                },
                body: JSON.stringify(data),
            }).then(response => response.json()).then(res => {
                h4.innerHTML=res.answer;
                console.log("res:", res);
            }).catch(err => {
                console.log("err:", err);
            });
        }

        // 阻止事件冒泡
        e.stopPropagation(); 
    }
});

4.资源

 无

5.运行截图

6.下载连接

 在此处下载压缩包

【免费】原生js配合Node.js的计算器资源-CSDN文库

 7.注意事项

此压缩包 包含前后端简单交互,后端需要用到Node.js,运行口令 nodemon app.js 

或者在serve文件夹直接运行run.bat文件,运行成功后打开html即可。注意:run.bat运行成功后不要退出cmd。

相关推荐

  1. js原生面试总结

    2024-07-12 18:22:03       48 阅读
  2. 原生js创建节点

    2024-07-12 18:22:03       50 阅读
  3. js原生ajax请求

    2024-07-12 18:22:03       21 阅读
  4. 原生js封装请求组件

    2024-07-12 18:22:03       32 阅读
  5. 原生js 实现table 打印

    2024-07-12 18:22:03       25 阅读
  6. 原生js实现缩略图

    2024-07-12 18:22:03       26 阅读
  7. todolist-原生js(ES6)

    2024-07-12 18:22:03       22 阅读
  8. js计算百分比

    2024-07-12 18:22:03       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 18:22:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 18:22:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 18:22:03       58 阅读
  4. Python语言-面向对象

    2024-07-12 18:22:03       69 阅读

热门阅读

  1. LeetCode 20. 有效的括号

    2024-07-12 18:22:03       18 阅读
  2. AI学习指南机器学习篇-聚类树的剪枝

    2024-07-12 18:22:03       17 阅读
  3. 华为的服务器创新之路

    2024-07-12 18:22:03       20 阅读
  4. 新版k8s拉取镜像失败问题

    2024-07-12 18:22:03       21 阅读
  5. 每日一题~p4447(贪心)

    2024-07-12 18:22:03       17 阅读
  6. windows server安装mino

    2024-07-12 18:22:03       22 阅读
  7. matlab实现pid控制液压系统

    2024-07-12 18:22:03       22 阅读