HTML+CSS+JS制作一个简单的计算器

2023-11-05

用HTML+CSS+JS制作了一个简单的计算器,它的使用类似于生活中使用的计算器。暂时未发现有任何计算上的错误,有问题请联系我,谢谢。

最终成果图:

在这里插入图片描述

HTML代码块:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>计算器</title>
    <link rel="stylesheet" href="./css/normalize_14.css">
    <link rel="stylesheet" href="./css/calculator.css">
</head>

<body>
    <main>
        <table>
            <thead>
                <tr>
                    <th colspan="5">
                        <input type="text" class="result" disabled>
                    </th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>
                        <button onclick="mC()">MC</button>
                    </td>
                    <td>
                        <button onclick="mAdd()">M+</button>
                    </td>
                    <td>
                        <button onclick="mSub()">M-</button>
                    </td>
                    <td>
                        <button onclick="mR()">MR</button>
                    </td>
                </tr>
                <tr>
                    <td>
                        <button onclick="c()">C</button>
                    </td>
                    <td>
                        <button onclick="reverse()">±</button>
                    </td>
                    <td>
                        <button class="calculate" value="/">/</button>
                    </td>
                    <td>
                        <button class="calculate" value="*">*</button>
                    </td>
                </tr>
                <tr>
                    <td>
                        <button class="calculate" value="7">7</button>
                    </td>
                    <td>
                        <button class="calculate" value="8">8</button>
                    </td>
                    <td>
                        <button class="calculate" value="9">9</button>
                    </td>
                    <td>
                        <button class="calculate" value="-">-</button>
                    </td>
                </tr>
                <tr>
                    <td>
                        <button class="calculate" value="4">4</button>
                    </td>
                    <td>
                        <button class="calculate" value="5">5</button>
                    </td>
                    <td>
                        <button class="calculate" value="6">6</button>
                    </td>
                    <td>
                        <button class="calculate" value="+">+</button>
                    </td>
                </tr>
                <tr>
                    <td>
                        <button class="calculate" value="1">1</button>
                    </td>
                    <td>
                        <button class="calculate" value="2">2</button>
                    </td>
                    <td>
                        <button class="calculate" value="3">3</button>
                    </td>
                    <td rowspan="2">
                        <button onclick="equal()">=</button>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <button class="calculate" value="0">0</button>
                    </td>
                    <td>
                        <button class="calculate" value=".">.</button>
                    </td>
                </tr>
            </tbody>
        </table>
    </main>
    <script src="./js/jquery-2.1.4/jquery.min.js"></script>
    <script src="./js/calculator.js"></script>
</body>

</html>

CSS代码块:

@font-face {
    font-family: "digital";
    src: url(./../font/digital-7_mono.ttf);
}

main {
    background-color: #a6d79a;
    position: fixed;
    width: 100%;
    height: 100%;
}

main>table {
    margin: 50px auto;
    background-color: #f2f2f2;
    border-radius: 5px;
}

main>table>thead>tr>th>input {
    width: 450px;
    height: 60px;
    margin: 10px 0;
    border: 1px solid #eaeaea;
    background-color: #1c1c1c;
    color: white;
    font-family: "digital";
    text-align: right;
    font-size: 28px;
}

main>table>tbody>tr>td>button {
    width: 100px;
    height: 60px;
    margin: 10px;
    color: #3f3f3f;
    outline: none;
    background-color: #f4f4f4;
    border: 1px solid #eaeaea;
}

main>table>tbody>tr>td>button:active {
    border-color: #3f3f3f;
}

main>table>tbody>tr:nth-child(5)>td:nth-child(4)>button {
    width: 100px;
    height: 140px;
}

main>table>tbody>tr:nth-child(6)>td:nth-child(1)>button {
    width: 220px;
    height: 60px;
}

JS代码块:

let arr = [0]; //公式数组
let result = "";   //输入的数字

// 计算器计算
$(document).ready(function () {
    $(".result").val(0);
    $(".calculate").on("click", function () {
        let nums = $(this).val();      //通过按键输入
        if (!isNaN(nums) || nums == ".") {
            if (result == "" && nums == ".") {
                result = "0.";
            } else if(result == "0" && nums == "0") {
                result = "0";
            } else if(result == "0" && nums != "0" && nums != ".") {
                result = "";
                result += nums;
            } else if (!(result.includes(".") && nums == ".")) {
                result += nums;
            }
            $(".result").val(result);
        } else {
            if (arr[1] != null && result != "") {
                arr[2] = $(".result").val();
                let result = calcu(arr[1], arr[0], arr[2]);
                $(".result").val(result);
                arr[0] = result;
                arr[2] = null;
            } else {
                arr[0] = $(".result").val();
            }
            arr[1] = nums;
            result = "";
        }
    });
});

//计算
function calcu(sym, num1, num2) {
    let result = 0;
    num1 = num1 - 0;
    num2 = num2 - 0;
    switch (sym) {
        case "+": {
            result = num1 + num2;
            break;
        }
        case "-": {
            result = num1 - num2;
            break;
        }
        case "*": {
            result = num1 * num2;
            break;
        }
        case "/": {
            result = num1 / num2;
            break;
        }
    }
    return parseFloat(result.toFixed(10));       //取准确小数结果
}

//等号计算
function equal() {
    if (arr[1] != null && result != "") {
        let num = $(".result").val();
        let result = calcu(arr[1], arr[0], num);
        $(".result").val(result);
        arr[0] = result;
        arr[1] = arr[2] = null;
    } else if(arr[1] == null) {
        arr[0] = $(".result").val();
        $(".result").val(arr[0]);
    } else {
        $(".result").val(arr[0]);
        arr[1] = null;
    }
    result = "";
}

//清除屏幕
function c() {
    arr = [0];
    result = "";
    $(".result").val(0);
}

//取相反数
function reverse() {
    let num = $(".result").val();
    $(".result").val(-num);
}

let memory = 0;

//归零目前记忆的数字
function mC() {
    memory = 0;
    result = "";
}

// 记忆当前数字,加入累加数字当中
function mAdd() {
    let addNum = $(".result").val() - 0;
    memory += addNum;
    result = "";    
}

//记忆当前数字,总数扣除当前数字
function mSub() {
    let subNum = $(".result").val() - 0;
    memory -= subNum;
    result = "";    
}

// 将当前计算出来的数字呈现
function mR() {
    $(".result").val(memory);
    result = "";    
}

注:需要代码的也可以从我的主页上传文件中自取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML+CSS+JS制作一个简单的计算器 的相关文章

  • 更新 Parse.com 中的一行

    我所拥有的是 当单击编辑按钮时 两个输入字段中的值将创建一个新行 并删除旧行 下面是我使用的代码 但我想要的是更新原始行而不是删除原始行 实例 http jsbin com uyonek 2使用下面的代码是如何工作的 editBtn onc
  • Bootstrap 4 行布局没有响应

    我正在使用 Bootstrap 4 在 MEAN 堆栈上为新闻文章布局创建一个 html 模板 但这应该不重要 对于这种总体布局的要求是 一篇 特色 文章位于其自己的列中 而其他 8 篇文章位于另一列中的两行中 当在较小的屏幕或移动设备上查
  • Phonegap(应用程序错误...发生网络错误)

    我已经使用phonegap 创建了一个版本 在index html 文件中 我编写了一个简单的iframe 用于加载网站 当我从phonegap获取本地url时它就起作用了 但如果我将整个构建作为 zip 文件上传到 PhoneGap 中
  • FPDF - 内嵌粗体文本

    我正在尝试从 PHP 创建 PDF 出于法律原因 我们需要将免责声明的一部分设为粗体 并且需要概述免责声明 我当前的代码使用 if isset POST optout POST optout yes pdf gt Ln 5 pdf gt S
  • 给定 url,如何加载图像,然后将其转换为 Javascript 中的 tf.tensor 数据?

    我是前端和 javascript 新手 现在我正在编写一个基于 CNN 的 Web 应用程序 要从给定的 url 加载图像 然后将图像输入 CNN 我尝试编写以下代码 async function getImage var img new
  • 将 html 源拆分为多个文件

    HTML 是否支持将源代码拆分为多个文件 我正在寻找 C 的等价物 include 或者也许是类似 C 的东西partial 可以采用源路径并在该位置注入文件内容的元素 如果之前有人问过这个问题 我们深表歉意 Google 和 SO 搜索没
  • 从 firebase 数据库获取最高分值

    在我的网站上有一些我从 firebase 获得的电影 电影的分数在0到100之间 我已经在我的网站上找到了所有电影 我还想按降序显示它们 例如评分最高的 5 部电影 我怎样才能实现这一点 感谢您的回答 const app initializ
  • 未使用 Font Family Open Sans

    我在用谷歌的 Open Sans 字体 http www google com fonts UsePlace use Collection Open Sans在我的应用程序中 我已经按照指示定义了样式表 然后我在主体选择器上使用它 body
  • 复制 Chrome 默认输入的轮廓样式

    如何设置默认 Chrome 输入的轮廓样式 焦点上为橙色 使其在每个浏览器中看起来都相同 Chrome 风格似乎是textarea focus outline rgb 229 151 0 auto 5px outline offset 2p
  • 使用 jQuery 的 .trigger('dragstart') 实现 HTML5 的拖放功能时如何 .setData/.getData

    当使用 jQuery 的 trigger dragstart 在具有 ondragstart drag event 属性的元素上触发函数时 如何使用 setData getData 实现 HTML5 在触摸设备上的拖放 流程示例 用户通过
  • 调整大小后获取实际图像大小

    我有一个充满缩略图的页面 用 css 调整大小150x150 当我单击缩略图时 页面变暗 并且图像以其真实尺寸显示 目前 我必须手动创建一个包含所有图像的实际高度的数组 为了解决设计问题 减少画廊的手动操作 我需要在调整图像大小 CSS 后
  • 如何使用 jQuery 将各种元素包装在 div 标签中?

    我有一个 html 结构 如下所示 h5 Title h5 p Content p ul li Item li li Item li ul p Content p h5 Title h5 p Content p ul li Item li
  • Django 未在 404 页面上应用应用程序中的 CSS 文件

    姜戈3 0 8 Python 3 7 x 我有一个包含一些应用程序的 Django 项目 我正在尝试为 400 403 404 500 错误制作一些 默认 错误页面 我已经这样做了 并显示了适当的模板 但没有任何样式或 JS 在 404 错
  • 下拉菜单导致滚动条

    我用过这个W3C 的示例 http www w3schools com bootstrap bootstrap dropdowns asp div class dropdown div
  • 将压缩的json数据存储在本地存储中

    我想将 JSON 数据存储在本地存储中 有时存储的数据可能超过 5MB 每个域的浏览器允许的最大阈值 无论如何 我可以压缩或压缩数据并将其存储在本地存储中吗 如果对大数据进行每个 JS 函数的压缩和解压 会增加多少延迟 我正在使用这个 js
  • 如何创建环境变量来保护我的网站的 Google 地图 API 密钥(或任何其他秘密值)?

    我正在学习使用 Bootstrap 编写自己的网站 并使用 Google 地图 API 密钥和 Google Developers 的脚本轻松地将地图放置在我的页面上 理想情况下 我会有类似的东西 即我已经尝试过这个 Html PHP
  • 输入元素可滚动并启用文本溢出省略号

    当我添加text overflow ellipsis对于输入元素 该元素是可滚动的 当我将光标放在元素上时 我可以左右滚动 就好像文本是全宽并且没有被截断一样 尽管后面没有文本 我该如何阻止这种行为 input width 180px te
  • 透明、无边框文本输入

    如何删除周围的边框
  • 创建响应式眼睛焦点图标

    我一直在尝试制作响应式彩色眼睛焦点图标 但到目前为止我所尝试的一切均不成功 我试图在某种程度上复制真眼的颜色 我使用边框 框阴影来获取颜色 但该部分没有缩放 也尝试过轮廓 但也失败了 那个甚至不是圆的 div 的高度当前是静态的 但我希望它
  • Chrome 上的 contenteditable 中未显示编辑光标

    当您打开此页面时 请参阅现场演示 http jsfiddle net gs3p1a6r 3 show 与 Chrome span span CSS myspan border 0 outline 0 JS myspan focus the

随机推荐

  • c++基础 面向对象:第四篇 (类和对象-封装)

    文章目录 类和对象 类和类的实例化 访问权限 成员属性私有化 封装 类和对象 c 面向对象的三大特性 封装 继承 多态 在c 中 认为万物皆对象 对象有属性和行为 类和类的实例化 在c 中 用关键字 class 去封装对象 语法 class
  • 启动rosbag出现警告TF_OLD_DATA ignoring data from the past for frame odom

  • 华为OD机试 - 寻找相似单词(Java 代码实现)

    题目描述 给定一个可存储若干单词的字典 找出指定单词的所有相似单词 并且按照单词名称从小到大排序输出 单词仅包括字母 但可能大小写并存 大写不一定只出现在首字母 相似单词说明 给定一个单词X 如果通过任意交换单词中字母的位置得到不同的单词Y
  • 【工具应用】关于FileZilla传输文件时的Transfer type设定问题

    在工作中经常会使用FileZilla软件 FTP工具 上传或者下载文件 最近遇到一个下载文件内容异常的问题 涉及到该软件中的Transfer type设置 于是进行了一些深入的学习 在此与君共享 以作前车之鉴 问题概述 在Win10环境下
  • Java多线程中常见错误梳理,新手程序员必看

    很多Java新手在刚接触线程时都会被其复杂的知识点搞晕 在实际应用中同样错误不断 如何才能快速掌握多线程呢 常见的Java多线程错误有哪些 接下来就给大家分享Java新手学习入门中多线程失误梳理 无论是客户端还是服务器端多线程Java程序
  • 永远跟得上时代的Harbor部署

    文章目录 1 安装docker与docker compose 2 安装harbor 3 docker连接harbor 4 常见错误 4 1 401 Unauthorized 4 2 跨域问题 1 安装docker与docker compos
  • 可能是最好的Mac Charles 配置指南

    1 从官网下载最新的Charles https www charlesproxy com download 2 安装Charles 3 破解Charles 利用在线工具生成jar文件替换Charles中原来的charles jar文件 在
  • unity踩坑记录

    1 Unity ScriptableObject生成的asset文件 关闭unity时数据丢失 需要先setdirty EditorUtility SetDirty obj AssetDatabase SaveAssets 同时 保证Scr
  • 如何生成SSH key

    第一步 检查本机是否存在 SSH key 如下图调出Git Bash 窗口 输入下面的命令 ls al ssh 如果有文件id rsa pub 或 id dsa pub 则直接进入步骤3将SSH key添加到GitHub中 否则进入第二步生
  • 龙招港2021高考成绩查询,龙招港黑龙江招生考试信息港2021黑龙江高考志愿填报系统入口...

    龙招港黑龙江招生考试信息港2021黑龙江高考志愿填报系统入口 龙招港黑龙江招生网http www lzk hl cn 是2021黑龙江高考志愿填报官方网站 黑龙江龙招港提供2021黑龙江高考一本二本专科志愿填报系统 2021黑龙江高考各批次
  • 2021年机械、航空航天与汽车工程国际会议(CMAAE)检索通知

    2021年机械 航空航天与汽车工程国际会议 CMAAE 2021 会议已检索
  • 【FreeRTOS】多任务创建

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏资料 https pan baidu com s 1nc1rfyLiMyw6ZhxiZ1Cumg pwd free 点赞 收藏 再看 养成习惯 订阅的粉丝
  • 蓝桥杯JAVA-28.前缀和与差分详解

    个人博客 www tothefor com 蓝桥杯复习知识点汇总 目录 开始之前 推荐先看一下总结 再看内容 也许会帮你更好的理解 前缀和是指某序列的前n项和 可以把它理解为数学上的数列的前n项和 而差分可以看成前缀和的逆运算 合理的使用前
  • Mybatis最全笔记--今日分享(参考狂神说)

    一 CRUD Mybatis 1 namespace namespace中的包名要和Dao Mapper接口的包名一致 2 select 选择 查询语句 id 就是对应的namespace中的方法名 resultType sql语句执行的返
  • Nginx基本配置(中级)

    文章目录 一 nginx反向代理 1 什么是反向代理 2 nginx代理配置 二 nginx负载均衡 三 nginx缓存 四 nginx优化 1 worker processes 2 worker connections 3 worker
  • 5 分钟让你明白 “软链接” 和“硬链接”的区别

    今天在知乎上看到一篇十分有趣的问题 如何评价微软高级工程师痴迷于soft link这一linux常见概念 虽然又是知名撕逼王曾某的撕逼帖 但是我还是想就题目中链接的问题简单地讲讲 什么是链接 链接简单说实际上是一种文件共享的方式 是 POS
  • 【numpy学习笔记】数组的存储和下载

    1 Saving array in binary format npy gt gt gt a np array 1 2 3 4 5 gt gt gt np save array a a gt gt gt np load array a np
  • 基于单片机的温室大棚环境监测系统设计

    温室大棚对北方反季节蔬菜的种植具有重要意义 据了解全国各地温室大棚使用集中 但是大棚环境调控方式落后 管理落后 生产效率比较低 针对此问题本文提出了一种基于STM32单片机智能温室大棚控制系统方案 实现环境参数的自动检测 以达到智能化 自动
  • EFilm 4.1

    EFilm 4 1 安装文件 Keygen 第一部分 http download csdn net detail crazpro 9696491 第二部分 http download csdn net detail crazpro 9696
  • HTML+CSS+JS制作一个简单的计算器

    用HTML CSS JS制作了一个简单的计算器 它的使用类似于生活中使用的计算器 暂时未发现有任何计算上的错误 有问题请联系我 谢谢 最终成果图 HTML代码块