当前位置:首页 > JavaScript

js实现简单计算器

2026-04-04 08:02:10JavaScript

基础实现思路

创建一个简单的计算器需要处理用户输入、解析运算表达式、执行计算并显示结果。以下是基于HTML、CSS和JavaScript的实现方法。

js实现简单计算器

HTML结构

<div class="calculator">
  <input type="text" id="display" readonly>
  <div class="buttons">
    <button onclick="appendToDisplay('7')">7</button>
    <button onclick="appendToDisplay('8')">8</button>
    <button onclick="appendToDisplay('9')">9</button>
    <button onclick="appendToDisplay('/')">/</button>
    <button onclick="appendToDisplay('4')">4</button>
    <button onclick="appendToDisplay('5')">5</button>
    <button onclick="appendToDisplay('6')">6</button>
    <button onclick="appendToDisplay('*')">*</button>
    <button onclick="appendToDisplay('1')">1</button>
    <button onclick="appendToDisplay('2')">2</button>
    <button onclick="appendToDisplay('3')">3</button>
    <button onclick="appendToDisplay('-')">-</button>
    <button onclick="appendToDisplay('0')">0</button>
    <button onclick="appendToDisplay('.')">.</button>
    <button onclick="calculate()">=</button>
    <button onclick="appendToDisplay('+')">+</button>
    <button onclick="clearDisplay()">C</button>
  </div>
</div>

CSS样式

.calculator {
  width: 200px;
  margin: 0 auto;
  border: 1px solid #ccc;
  padding: 10px;
  border-radius: 5px;
}

#display {
  width: 100%;
  margin-bottom: 10px;
  padding: 5px;
  font-size: 20px;
}

.buttons {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 5px;
}

button {
  padding: 10px;
  font-size: 18px;
  cursor: pointer;
}

JavaScript逻辑

let currentInput = '';

function appendToDisplay(value) {
  currentInput += value;
  document.getElementById('display').value = currentInput;
}

function clearDisplay() {
  currentInput = '';
  document.getElementById('display').value = '';
}

function calculate() {
  try {
    const result = eval(currentInput);
    document.getElementById('display').value = result;
    currentInput = result.toString();
  } catch (error) {
    document.getElementById('display').value = 'Error';
    currentInput = '';
  }
}

安全改进方案

直接使用eval()存在安全风险,建议改用解析器或更安全的计算方式:

js实现简单计算器

function calculate() {
  const tokens = currentInput.match(/(\d+\.?\d*)|([+\-*/])/g);
  if (!tokens) return;

  let result = parseFloat(tokens[0]);
  for (let i = 1; i < tokens.length; i += 2) {
    const operator = tokens[i];
    const operand = parseFloat(tokens[i + 1]);

    switch (operator) {
      case '+': result += operand; break;
      case '-': result -= operand; break;
      case '*': result *= operand; break;
      case '/': result /= operand; break;
      default: return 'Error';
    }
  }

  document.getElementById('display').value = result;
  currentInput = result.toString();
}

扩展功能建议

为增强用户体验,可考虑添加以下功能:

  • 键盘事件支持
  • 历史记录功能
  • 百分比计算
  • 括号优先级处理
  • 科学计算功能

完整实现时需注意边界条件处理,如除以零、连续运算符等异常情况。

标签: 计算器简单
分享给朋友:

相关文章

vue实现简单树

vue实现简单树

使用 Vue 实现简单树形结构 递归组件实现 递归组件是 Vue 实现树形结构的常见方式。通过组件调用自身实现无限层级嵌套。 <template> <ul> &l…

简单vue状态管理实现

简单vue状态管理实现

Vue 状态管理实现方法 使用 Vue 的响应式系统 Vue 的响应式系统可以轻松实现简单的状态管理。通过创建一个响应式对象,可以在多个组件之间共享状态。 // store.js import {…

react简单实现树形控件

react简单实现树形控件

实现树形控件的基本思路 树形控件的核心是递归渲染节点,每个节点可以包含子节点。通过状态管理展开/折叠状态,动态渲染可见部分。 基础代码结构 创建一个可复用的树形组件,包含以下关键部分:…

制作简单css

制作简单css

基础CSS结构 CSS(层叠样式表)用于控制网页的样式和布局。一个简单的CSS文件通常包含选择器和声明块。选择器用于定位HTML元素,声明块包含属性和值,用于定义样式。 /* 选择器 */ body…

网页制作css简单

网页制作css简单

CSS 基础语法 CSS 规则由选择器和声明块组成。选择器指定样式应用的对象,声明块包含属性和值: 选择器 { 属性: 值; 属性: 值; } 示例: p { color: b…

php实现计算器

php实现计算器

基本计算器实现 使用PHP创建一个简单的计算器可以通过HTML表单接收用户输入,PHP处理计算逻辑。以下是一个基础实现示例: HTML表单部分 (calculator.html) <form…