当前位置:首页 > JavaScript

js 实现计算器

2026-02-28 23:13:25JavaScript

基础计算器实现

使用 JavaScript 创建一个基础计算器需要处理用户输入、运算逻辑和结果显示。以下是核心实现方法:

HTML 结构

<div class="calculator">
  <input type="text" id="result" disabled>
  <div class="buttons">
    <button onclick="appendToResult('7')">7</button>
    <button onclick="appendToResult('8')">8</button>
    <!-- 其他数字和操作符按钮 -->
    <button onclick="calculate()">=</button>
    <button onclick="clearResult()">C</button>
  </div>
</div>

JavaScript 逻辑

js 实现计算器

let currentInput = '';

function appendToResult(value) {
  currentInput += value;
  document.getElementById('result').value = currentInput;
}

function clearResult() {
  currentInput = '';
  document.getElementById('result').value = '';
}

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

高级计算器功能扩展

对于更复杂的科学计算器,需要引入数学函数库或扩展功能:

三角函数和高级运算

js 实现计算器

function sin() {
  currentInput = Math.sin(parseFloat(currentInput)).toString();
  updateDisplay();
}

function log() {
  currentInput = Math.log10(parseFloat(currentInput)).toString();
  updateDisplay();
}

表达式解析替代 eval

function safeEval(expr) {
  return Function('"use strict";return (' + expr + ')')();
}

键盘事件支持

添加键盘输入支持提升用户体验:

document.addEventListener('keydown', (e) => {
  if (/[0-9+\-*/.=]/.test(e.key)) {
    if (e.key === '=' || e.key === 'Enter') {
      calculate();
    } else {
      appendToResult(e.key);
    }
  } else if (e.key === 'Escape') {
    clearResult();
  }
});

注意事项

  • 避免直接使用 eval() 存在安全风险,生产环境应使用表达式解析库
  • 考虑添加输入验证防止非法表达式
  • 对于移动端需要优化触控体验
  • 添加历史记录功能可提升实用性

完整实现建议使用模块化方式组织代码,将显示逻辑与计算逻辑分离。对于商业项目,可以考虑使用现成的库如 math.js 处理复杂运算。

标签: 计算器js
分享给朋友:

相关文章

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span&…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="d…