JavaScript实例–实现计算器

下面是“JavaScript实例--实现计算器”的完整攻略。

1. 需求分析

在开始编写代码之前,我们需要先确定需求。计算器需要实现以下功能:

  • 实现加、减、乘、除四则运算
  • 实现小数点的输入和计算
  • 实现清除和退格功能
  • 实现等号的计算

2. 页面结构和样式

我们需要创建一个HTML页面,包含一个输入框、数字按钮、四则运算按钮和其他功能按钮,如清除和退格按钮等。对应的HTML结构可以参考以下示例:

<div class="calculator">
  <input type="text" id="result" />
  <button class="number" id="btn-1">1</button>
  <button class="number" id="btn-2">2</button>
  <button class="number" id="btn-3">3</button>
  <button class="operator" id="btn-add">+</button>
  <button class="number" id="btn-4">4</button>
  <button class="number" id="btn-5">5</button>
  <button class="number" id="btn-6">6</button>
  <button class="operator" id="btn-sub">-</button>
  <button class="number" id="btn-7">7</button>
  <button class="number" id="btn-8">8</button>
  <button class="number" id="btn-9">9</button>
  <button class="operator" id="btn-mul">*</button>
  <button class="clear" id="btn-clear">C</button>
  <button class="number" id="btn-0">0</button>
  <button class="decimal" id="btn-dot">.</button>
  <button class="operator" id="btn-div">/</button>
  <button class="backspace" id="btn-backspace">←</button>
  <button class="equal" id="btn-equal">=</button>
</div>

我们需要为计算器添加样式,在CSS中添加样式。

3. JavaScript代码实现

3.1 获取DOM元素并添加事件监听器

const result = document.querySelector('#result');
const numbers = document.querySelectorAll('.number');
const operators = document.querySelectorAll('.operator');
const clear = document.querySelector('#btn-clear');
const backspace = document.querySelector('#btn-backspace');
const equal = document.querySelector('#btn-equal');
const decimal = document.querySelector('#btn-dot');

for (let i = 0; i < numbers.length; i++) {
  numbers[i].addEventListener('click', function () {
    appendNumber(numbers[i].textContent);
  });
}

for (let i = 0; i < operators.length; i++) {
  operators[i].addEventListener('click', function () {
    selectOperator(operators[i].textContent);
  });
}

clear.addEventListener('click', function () {
  clearResult();
});

backspace.addEventListener('click', function () {
  deleteNumber();
});

decimal.addEventListener('click', function () {
  addDecimal();
});

equal.addEventListener('click', function () {
  calculateResult();
});

3.2 实现函数

下面我们将实现函数,包括:

  • appendNumber
  • selectOperator
  • clearResult
  • deleteNumber
  • addDecimal
  • calculateResult
let currentInput = '';
let previousInput = '';
let operator = null;
let isNewOperation = false;

function appendNumber(number) {
  if (isNewOperation) {
    currentInput = number;
    isNewOperation = false;
  } else {
    currentInput += number;
  }

  updateScreen();
}

function selectOperator(selectedOperator) {
  if (operator !== null) {
    calculateResult();
  }

  previousInput = currentInput;
  currentInput = '';
  operator = selectedOperator;
}

function clearResult() {
  currentInput = '';
  previousInput = '';
  operator = null;
  isNewOperation = false;

  updateScreen();
}

function deleteNumber() {
  currentInput = currentInput.slice(0, -1);

  updateScreen();
}

function addDecimal() {
  if (currentInput === '') {
    currentInput += '0.';
  } else if (currentInput.indexOf('.') === -1) {
    currentInput += '.';
  }

  updateScreen();
}

function calculateResult() {
  const currentValue = parseFloat(currentInput);
  const previousValue = parseFloat(previousInput);

  if (isNaN(currentValue) || isNaN(previousValue)) {
    return;
  }

  switch (operator) {
    case '+':
      currentInput = previousValue + currentValue;
      break;
    case '-':
      currentInput = previousValue - currentValue;
      break;
    case '*':
      currentInput = previousValue * currentValue;
      break;
    case '/':
      currentInput = previousValue / currentValue;
      break;
    default:
      return;
  }

  isNewOperation = true;
  operator = null;

  updateScreen();
}

function updateScreen() {
  result.value = currentInput;
}

clearResult();

3.3 示例演示

下面给出两个示例:

3.3.1 演示1

  1. 点击数字按钮1,屏幕显示1。
  2. 点击加号按钮+,屏幕仍旧显示1。
  3. 点击数字按钮5,屏幕显示15。
  4. 点击等号按钮=,屏幕显示16。

3.3.2 演示2

  1. 点击数字按钮4,屏幕显示4。
  2. 点击乘号按钮*,屏幕仍旧显示4。
  3. 点击数字按钮2,屏幕显示42。
  4. 点击减号按钮-,屏幕仍旧显示42。
  5. 点击数字按钮5,屏幕显示5。
  6. 点击等号按钮=,屏幕显示37。

以上就是“JavaScript实例--实现计算器”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实例–实现计算器 - Python技术站

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

相关文章

  • js检测浏览器夜晚/黑暗(dark)模式方法

    如何检测浏览器的夜晚/黑暗模式 当用户在电脑或手机等浏览器中将主题从白天模式切换到黑夜模式时,浏览器会触发媒体查询 prefers-color-scheme。我们可以利用 JavaScript 检测媒体查询条件,推断出当前是白天还是黑夜模式。 检测浏览器是否支持 prefers-color-scheme 媒体查询 在使用 prefers-color-sche…

    JavaScript 2023年6月10日
    00
  • JavaScript中如何判断对象是否为空的方法

    JavaScript中判断对象是否为空可以通过以下方法: 使用Object.keys()方法判断对象是否为空 Object.keys()方法可以返回一个由指定对象的所有可枚举属性组成的数组,如果对象没有任何可枚举的属性,则返回空数组,因此可以通过判断Object.keys()方法返回的数组长度是否为0来判断对象是否为空。 示例代码: const emptyO…

    JavaScript 2023年6月10日
    00
  • 深度剖析JavaScript作用域从局部到全局一网打尽

    深度剖析JavaScript作用域从局部到全局一网打尽 什么是作用域 作用域是指一个变量、函数、对象可以被访问的范围。在JavaScript中,作用域有两种:全局作用域和局部作用域。 全局作用域是指在代码的任何地方都能访问的变量、函数、对象,通常是在顶层定义的。而局部作用域则是指只能在一个函数内部访问的变量、函数、对象。 作用域链 当在JavaScript中…

    JavaScript 2023年5月28日
    00
  • JS两种类型的表单提交方法实例分析

    下面是关于“JS两种类型的表单提交方法实例分析”的完整攻略: JS两种类型的表单提交方法实例分析 提交表单的两种方式 在JS中,可以使用两种不同的方式来提交表单:普通表单提交和Ajax表单提交。 普通表单提交 普通表单是指通过浏览器的提交按钮或通过JS代码完成表单的提交。当我们使用表单提交时,表单会重新加载页面并传递表单数据到服务器。普通表单提交方法很简单,…

    JavaScript 2023年6月10日
    00
  • Javascript中常见的逻辑题和解决方法

    下面是Javascript中常见的逻辑题和解决方法的完整攻略。 一、逻辑题 在Javascript中,经常会遇到一些逻辑题。这些题通常要求我们根据给定的条件,编写相应的代码实现目标功能。下面是两个常见的逻辑题示例: 1. 反转字符串 给定一个字符串,如何将其反转输出? 样例 输入:”hello world”输出:”dlrow olleh” 2. 找出数组中的…

    JavaScript 2023年6月10日
    00
  • JavaScript实现同步于本地时间的动态时间显示方法

    这里是“JavaScript实现同步于本地时间的动态时间显示方法”的完整攻略。 1. 前言 在编写Web应用程序时,经常需要展示当前时间。如果使用静态时间,很可能无法与用户所在的时区同步,造成不必要的困扰。因此,我们需要一个动态时间显示方法,它可以动态地显示本地时间,并支持用户所在时区的变化。 2. 实现方法 在实现动态时间显示方法时,我们需要使用JavaS…

    JavaScript 2023年5月27日
    00
  • js设置document.domain实现跨域的注意点分析

    关于“js设置document.domain实现跨域的注意点分析”的攻略,我将详细介绍如下: 什么是跨域? 在 Web 开发中,跨域是指在一个域下的文档或脚本试图去请求另一个域下的资源。简单来说,当浏览器向一个网站的服务器发送请求时,如果该请求要访问另外一个域名下的资源(比如 JavaScript 文件、CSS 文件等),那么就会发生跨域问题。 为什么需要跨…

    JavaScript 2023年6月10日
    00
  • JavaScript window.setTimeout() 的详细用法

    JavaScript window.setTimeout() 的详细用法 在 JavaScript 中,window.setTimeout() 方法可以定时执行一个指定的代码块。它接收两个参数,分别是需要执行的代码块和执行时间(单位为毫秒)。 语法 window.setTimeout(code, delay); 其中,code 为需要执行的代码块;delay…

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