📜  使用 jQuery 设计和实现计算器(1)

📅  最后修改于: 2023-12-03 14:49:42.274000             🧑  作者: Mango

使用 jQuery 设计和实现计算器

介绍

计算器是一个非常简单但又非常实用的工具,在程序设计中使用计算器也经常会涉及到。在本文中,我们将介绍如何使用 jQuery 实现一个简单的计算器。

需求

设计一个具有基本算术操作(加、减、乘、除)的计算器,同时支持小数点和百分号的计算。

实现

首先在 HTML 页面中引入 jQuery 库,并创建一个计算器的 HTML 骨架:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>jQuery Calculator</title>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
  </head>
  <body>
    <div id="calculator">
      <div id="result"></div>
      <div id="buttons">
        <button class="operator" id="add">+</button>
        <button class="operator" id="subtract">-</button>
        <button class="operator" id="multiply">×</button>
        <button class="operator" id="divide">÷</button>
        <button class="number" id="decimal">.</button>
        <button class="number" id="percent">%</button>
        <button class="number" id="clear">C</button>
        <button class="number" id="equals">=</button>
        <button class="number" id="zero">0</button>
        <button class="number" id="one">1</button>
        <button class="number" id="two">2</button>
        <button class="number" id="three">3</button>
        <button class="number" id="four">4</button>
        <button class="number" id="five">5</button>
        <button class="number" id="six">6</button>
        <button class="number" id="seven">7</button>
        <button class="number" id="eight">8</button>
        <button class="number" id="nine">9</button>
      </div>
    </div>
  </body>
</html>

在 JavaScript 文件中,我们可以定义基本的算术函数 addition, subtraction, multiplicationdivision,并使用 jQuery 为每个按钮分配单击事件处理程序:

$(document).ready(function() {
  var equation = '';
  var lastPressed = '';
  var result = 0;
  
  function addition(x, y) {
    return x + y;
  }
  
  function subtraction(x, y) {
    return x - y;
  }
  
  function multiplication(x, y) {
    return x * y;
  }
  
  function division(x, y) {
    return x / y;
  }
  
  function evaluate() {
    var arr = equation.split(' ');
    var num1 = parseFloat(arr[0]);
    var op = arr[1];
    var num2 = parseFloat(arr[2]);
    
    switch(op) {
      case '+': result = addition(num1, num2); break;
      case '-': result = subtraction(num1, num2); break;
      case '×': result = multiplication(num1, num2); break;
      case '÷': result = division(num1, num2); break;
    }
    
    $('#result').text(result);
    equation = '';
  }
  
  $('.number').click(function() {
    var value = $(this).attr('id');
    
    if (value === 'decimal' && equation.indexOf('.') !== -1) {
      return;
    }
    
    if (value === 'percent') {
      var arr = equation.split(' ');
      var num = parseFloat(arr[arr.length - 1]);
      num /= 100;
      
      if (arr.length === 1) {
        equation = num.toString();
      } else {
        arr[arr.length - 1] = num.toString();
        equation = arr.join(' ');
      }
      
      $('#result').text(num.toString());
      return;
    }
    
    if (value === 'clear') {
      equation = '';
      lastPressed = '';
      result = 0;
      $('#result').text('0');
      return;
    }
    
    if (value === 'zero' && equation === '') {
      return;
    }
    
    if (value === 'zero' && equation[equation.length - 1] === '/') {
      return;
    }
    
    if (value === 'equals') {
      if (lastPressed === 'operator' || equation === '') {
        return;
      }
      
      evaluate();
      return;
    }
    
    if (value === 'decimal') {
      if (lastPressed !== 'number') {
        equation += '0';
      }
    }
    
    if (value === 'percent') {
      if (lastPressed === 'operator') {
        return;
      }
    }
    
    equation += value;
    
    if (value === 'add' || value === 'subtract' || value === 'multiply' || value === 'divide') {
      equation += ' ';
    }
    
    if (value === 'decimal') {
      lastPressed = 'decimal';
    } else if (value === 'percent') {
      lastPressed = 'percent';
    } else if (value === 'clear') {
      lastPressed = 'clear';
    } else if (value === 'equals') {
      lastPressed = 'equals';
    } else if (value === 'add' || value === 'subtract' || value === 'multiply' || value === 'divide') {
      lastPressed = 'operator';
    } else {
      lastPressed = 'number';
    }
    
    $('#result').text(equation);
  });
});

最终,我们得到一个可以输入算术表达式并计算结果的 jQuery 计算器。

总结

在本文中,我们介绍了如何使用 jQuery 实现一个简单的计算器。这个计算器可以处理基本的算术操作(加、减、乘、除),支持小数点和百分号的计算。学习和使用 jQuery 可以让你的代码更加简洁和可读,同时也可以提高你的开发效率。