简易的JS计算器实现代码

下面是关于“简易的JS计算器实现代码”的完整攻略:

一、准备工作

要实现一个简易的JS计算器,首先需要在HTML文件中创建计算器的界面,其中需要包括如下组件:

  1. 计算器界面:使用HTML的div元素模拟。
  2. 显示框:显示计算结果。
  3. 操作按钮:包括加、减、乘、除等常见计算操作,使用HTML的button元素模拟。

在创建好计算器的界面后,需要在JS文件中获取各个操作按钮的ID,以方便后续操作,并使用addEventListener()方法为按钮添加点击事件监听器。

二、实现计算器的核心逻辑

  1. 数字按键事件

在计算器界面中,每个数字按钮被点击后,需要将其数字值显示在显示框中,即实现姆供了数字输入功能。为此,在JS文件中需要添加数字按键事件监听器,并在事件处理函数中使用JavaScript的DOM操作将按键事件中携带的数字值添加进显示框中。

示例代码如下:

const numButtons = document.querySelectorAll('.calc-button__num');
const output = document.querySelector('.calc-output');
numButtons.forEach(function(button) {
    button.addEventListener('click', function(event) {
        output.value += event.target.textContent;
    });
});
  1. 操作符按键事件

在计算器界面中,操作符按键被点击后,需要根据显示框中的数字值进行计算,并将计算结果显示在显示框中。为此,在JS文件中需要添加操作符按键事件监听器,并在事件处理函数中使用JavaScript实现计算器核心逻辑,包括数字的加减乘除等计算运算。

示例代码如下:

const operatorButtons = document.querySelectorAll('.calc-button__operator');
const calculate = function(a, b, operator) {
    switch (operator) {
        case '+':
            return a + b;
        case '-':
            return a - b;
        case '*':
            return a * b;
        case '/':
            return a / b;
        default:
            throw new Error(`Unknown operator ${operator}.`);
    }
};
let operand1 = null;
let operator = null;
operatorButtons.forEach(function(button) {
    button.addEventListener('click', function(event) {
        if (operand1 === null) {
            operand1 = Number(output.value);
            operator = event.target.textContent;
            output.value = '';
        } else {
            const operand2 = Number(output.value);
            const result = calculate(operand1, operand2, operator);
            operand1 = result;
            operator = event.target.textContent;
            output.value = '';
            output.value = result;
        }
    });
});

三、完整代码示例

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>JS Calculator</title>
    <style>
      .calc {
        display: flex;
        flex-wrap: wrap;
        width: 240px;
        margin: auto;
      }
      .calc__output {
        width: 100%;
        margin-bottom: 10px;
        font-size: 18px;
      }
      .calc-button {
        width: 50%;
        box-sizing: border-box;
        padding: 10px;
        font-size: 16px;
        text-align: center;
        background-color: #fff;
        border: 1px solid transparent;
      }
      .calc-button:hover {
        background-color: #eee;
      }
      .calc-button.--operator {
        background-color: #f5f5f5;
      }
    </style>
  </head>
  <body>
    <div class="calc">
      <input type="text" class="calc__output" />
      <button class="calc-button calc-button__num">7</button>
      <button class="calc-button calc-button__num">8</button>
      <button class="calc-button calc-button__num">9</button>
      <button class="calc-button calc-button__operator">+</button>
      <button class="calc-button calc-button__num">4</button>
      <button class="calc-button calc-button__num">5</button>
      <button class="calc-button calc-button__num">6</button>
      <button class="calc-button calc-button__operator">-</button>
      <button class="calc-button calc-button__num">1</button>
      <button class="calc-button calc-button__num">2</button>
      <button class="calc-button calc-button__num">3</button>
      <button class="calc-button calc-button__operator">*</button>
      <button class="calc-button calc-button__num">0</button>
      <button class="calc-button calc-button__operator">/</button>
      <button class="calc-button calc-button__operator">=</button>
      <button class="calc-button calc-button__operator">C</button>
    </div>
    <script>
      const numButtons = document.querySelectorAll('.calc-button__num');
      const operatorButtons = document.querySelectorAll('.calc-button__operator');
      const output = document.querySelector('.calc__output');
      const calculate = function(a, b, operator) {
        switch (operator) {
          case '+':
            return a + b;
          case '-':
            return a - b;
          case '*':
            return a * b;
          case '/':
            return a / b;
          default:
            throw new Error(`Unknown operator ${operator}.`);
        }
      };
      let operand1 = null;
      let operator = null;
      numButtons.forEach(function(button) {
        button.addEventListener('click', function(event) {
          output.value += event.target.textContent;
        });
      });
      operatorButtons.forEach(function(button) {
        button.addEventListener('click', function(event) {
          switch (event.target.textContent) {
            case '+':
            case '-':
            case '*':
            case '/':
              if (operand1 === null) {
                operand1 = Number(output.value);
              } else {
                const operand2 = Number(output.value);
                const result = calculate(operand1, operand2, operator);
                operand1 = result;
                output.value = result;
              }
              operator = event.target.textContent;
              output.value = '';
              break;
            case '=':
              if (operand1 !== null && operator !== null) {
                const operand2 = Number(output.value);
                const result = calculate(operand1, operand2, operator);
                operand1 = null;
                operator = null;
                output.value = result;
              }
              break;
            case 'C':
              operand1 = null;
              operator = null;
              output.value = '';
              break;
            default:
              throw new Error(`Unknown operator ${event.target.textContent}.`);
          }
        });
      });
    </script>
  </body>
</html>

以上是“简易的JS计算器实现代码”的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简易的JS计算器实现代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript File API文件上传预览

    下面是关于“JavaScript File API文件上传预览”的完整攻略。 什么是JavaScript File API文件上传预览? JavaScript File API 文件上传预览是浏览器API之一,主要用于在浏览器中的上传文件操作中,可以通过JavaScript获取文件内容并展示到网页上,给用户更加直观的展示效果。 实现文件上传预览的步骤 1. …

    JavaScript 2023年5月27日
    00
  • 详解JavaScript中typeof与instanceof用法

    详解JavaScript中typeof与instanceof用法 typeof typeof 是用于判断一个变量的基本数据类型的关键字,无法判断对象的具体类型。 如果变量是字符串,返回 “string”。 如果变量是数字,返回 “number”。 如果变量是布尔型,返回 “boolean”。 如果变量是对象,返回 “object”。 如果变量是函数,返回 “…

    JavaScript 2023年5月27日
    00
  • 5天学会asp

    5天学会ASP完整攻略 ASP是一种基于服务器端脚本语言的Web开发技术,使用ASP可以轻松构建动态网站和Web应用程序。如果你想在5天时间内掌握ASP技术,下面是具体的学习攻略: Day 1:入门 先了解ASP的基础知识,可以查看一些相关的文章或者教程,例如MDN web文档等 安装IIS(Internet Information Services)Web…

    JavaScript 2023年6月10日
    00
  • JavaScript实现的MD5算法完整实例

    JavaScript实现MD5算法完整实例攻略 简介 MD5是一种广泛使用的密码加密算法,它可以将任意长度的消息转换为128位的消息摘要。在实际开发过程中,我们需要使用MD5算法来保证密码等敏感信息的安全性。本文将讲解如何使用JavaScript实现MD5算法。 步骤 引入MD5库 我们可以在网上找到许多JavaScript实现MD5算法的库,如SparkM…

    JavaScript 2023年5月19日
    00
  • JavaScript组合拼接字符串的效率对比测试

    这里是“JavaScript组合拼接字符串的效率对比测试”的完整攻略。 前言 在实际前端项目中,字符串拼接是很常见的操作。比如说,在渲染页面的时候,需要将一些字符串拼接后放到标签属性里;或者需要将字符串作为参数传递给后端接口。有经验的前端工程师都知道,正确使用字符串拼接可以使得程序运行更快。因此,在本文中,我们将会比较常用的几种字符串拼接方法,以了解它们的效…

    JavaScript 2023年5月28日
    00
  • 页面中js执行顺序

    下面是页面中js执行顺序的完整攻略。 执行顺序 在页面中,JavaScript脚本可以通过多种方式嵌入到HTML文档中,如内联脚本、外部脚本和动态添加脚本等。JavaScript脚本的执行顺序有以下规则: 按照文档内的顺序解析脚本,在HTML文档中与JavaScript相关的所有元素按照它们在文档中的顺序来解析。因此,文档中后面出现的脚本无法使用文档前面定义…

    JavaScript 2023年5月28日
    00
  • 深入理解javascript中defer的作用

    深入理解JavaScript中defer的作用 什么是defer defer是HTML5中定义的一种异步加载脚本的方法,可以让脚本文件在后台加载,不影响页面的渲染,等到页面加载完成后再执行脚本。 如何使用defer 使用defer很简单,只需要在script标签中设置defer属性即可,例如: <script defer src="examp…

    JavaScript 2023年6月10日
    00
  • JavaScript不刷新实现浏览器的前进后退功能

    实现浏览器的前进后退功能,通常需要使用浏览器提供的history对象来实现。而JavaScript不刷新实现浏览器的前进后退功能,可以通过以下步骤来完成: 1. 修改URL的哈希值 改变URL哈希值(URL中#后面内容)时,浏览器不会刷新页面,因此可以通过修改哈希值来实现前进后退。具体实现步骤如下: 在URL中添加hashchange事件监听,当页面哈希值发…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部