JavaScript实例–实现计算器

yizhihongxing

下面是“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日

相关文章

  • javascript回调函数详解

    JavaScript回调函数详解 在 JavaScript 中,函数可以被传递给另外一个函数作为参数,这个被传递的函数就被称为“回调函数”。回调函数可以在被传递的函数执行完毕后被调用,用来处理结果数据或实现其他功能。回调函数是 JavaScript 中常用的编程技巧之一,它们可以简化代码结构、提高代码可读性和可维护性。 回调函数的使用 在 JavaScrip…

    JavaScript 2023年5月27日
    00
  • ElementUI中Tree组件使用案例讲解

    下面是ElementUI中Tree组件使用的完整攻略。 1. Tree组件介绍 Tree组件是ElementUI中用来展示树形数据结构的组件。它可以帮助我们方便地展示复杂的数据,简化用户的交互流程。 2. Tree组件的基本使用 使用Tree组件的前提是需要安装ElementUI库,可以通过以下命令安装: npm install element-ui -S …

    JavaScript 2023年6月10日
    00
  • javascript防抖函数debounce详解

    JavaScript防抖函数debounce详解 前言 防抖函数是 JavaScript 中常用的函数之一,通过防抖函数的运用可以有效地控制函数的调用次数,有效地提高性能体验。本文将详细讲解防抖函数的使用方法,包括原理、实现方法以及示例等。 什么是防抖函数 在 JavaScript 中,当某个函数被频繁调用时,可能会导致页面性能问题,例如用户短时间内快速地多…

    JavaScript 2023年5月27日
    00
  • 详解js正则表达式语法介绍

    详解js正则表达式语法介绍 什么是正则表达式 正则表达式是一种强大的文本匹配工具,它可以根据特定的符号和语法定义来描述和匹配文本中某个部分的规律。 在js中,我们可以通过RegExp对象来创建正则表达式,或者直接使用正则表达式字面量(使用斜杠包围)。 正则表达式语法介绍 基本语法 正则表达式由两部分组成:模式和标志。模式是我们想要匹配的文本规律,标志则是对模…

    JavaScript 2023年6月10日
    00
  • 解决Vue路由导航报错:NavigationDuplicated: Avoided redundant navigation to current location

    当使用Vue-Router来进行页面导航时,有时会遇到“NavigationDuplicated: Avoided redundant navigation to current location”报错。这个错误提示很明确,表示重复导航到了当前的页面地址。 这种错误通常是因为两次相同的路由导航发生在短时间内,例如用户快速点击同一个路由链接或使用了类似于Vue…

    JavaScript 2023年6月11日
    00
  • JavaScript利用canvas实现炫酷的碎片切图效果

    JavaScript利用canvas实现炫酷的碎片切图效果是一种非常流行的前端动画效果。下面是该攻略的详细步骤: 1. 准备工作 首先,需要在HTML文件中引入一个canvas元素,并为其指定宽度和高度。然后,在JavaScript文件中获取canvas元素,以便后续操作。 <canvas id="canvas" width=&qu…

    JavaScript 2023年6月11日
    00
  • 基于js 各种排序方法和sort方法的区别(详解)

    针对“基于js 各种排序方法和sort方法的区别(详解)”这个话题,我将从以下几个方面进行详细讲解。 一、基础排序算法 在介绍各种排序算法之前,我们先了解一下几个基础排序算法:冒泡排序、插入排序和选择排序。 1. 冒泡排序 冒泡排序的基本思路是比较相邻的元素,如果前面的元素比后面的大,则交换这两个元素。每完成一轮比较,就可以确定一个最大的元素,并且这个最大的…

    JavaScript 2023年6月11日
    00
  • Android编程实现webview执行loadUrl时隐藏键盘的workround效果

    Android中的WebView可以用于加载网页,但在使用时,可能会出现键盘遮挡了 WebView 界面的问题,这就需要我们通过编程实现隐藏键盘的效果。下面将提供一些实现方法。 方法一:使用InputMethodManager 在WebView中执行loadUrl()时,可以通过InputMethodManager隐藏软键盘。代码示例如下: InputMet…

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