当前位置:首页 > JavaScript

js 实现计算器

2026-04-03 23:41:48JavaScript

实现基础计算器功能

使用JavaScript实现一个基础计算器需要处理用户输入、运算逻辑和结果显示。以下是一个简单的实现方案:

const display = document.getElementById('display');
const buttons = document.querySelectorAll('button');

buttons.forEach(button => {
  button.addEventListener('click', () => {
    const value = button.textContent;

    if (value === '=') {
      try {
        display.value = eval(display.value);
      } catch {
        display.value = 'Error';
      }
    } else if (value === 'C') {
      display.value = '';
    } else {
      display.value += value;
    }
  });
});

处理更复杂的运算逻辑

对于更复杂的计算器,需要实现更安全的运算处理:

function calculate() {
  let expression = display.value
    .replace(/×/g, '*')
    .replace(/÷/g, '/');

  try {
    const result = new Function('return ' + expression)();
    display.value = Number.isFinite(result) ? result : 'Error';
  } catch {
    display.value = 'Error';
  }
}

添加键盘支持

增强用户体验需要支持键盘输入:

document.addEventListener('keydown', (e) => {
  if (/[0-9+\-*/.=]/.test(e.key)) {
    e.preventDefault();
    const button = document.querySelector(`button[data-key="${e.key}"]`);
    button && button.click();
  } else if (e.key === 'Enter') {
    document.querySelector('button[value="="]').click();
  } else if (e.key === 'Escape') {
    document.querySelector('button[value="C"]').click();
  }
});

实现科学计算功能

扩展科学计算功能需要添加更多运算:

js 实现计算器

function handleScientificFunction(func) {
  const currentValue = parseFloat(display.value);

  switch(func) {
    case 'sqrt':
      display.value = Math.sqrt(currentValue);
      break;
    case 'pow':
      display.value = Math.pow(currentValue, 2);
      break;
    case 'sin':
      display.value = Math.sin(currentValue);
      break;
    // 添加其他科学计算函数
  }
}

完整的HTML结构示例

配套的HTML结构可以参考以下代码:

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

添加CSS样式

基础样式可以提升计算器的视觉体验:

js 实现计算器

.calculator {
  width: 300px;
  margin: 0 auto;
  padding: 20px;
  background: #f4f4f4;
  border-radius: 10px;
}

#display {
  width: 100%;
  height: 50px;
  margin-bottom: 10px;
  font-size: 24px;
  text-align: right;
}

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

button {
  height: 50px;
  font-size: 18px;
  border: none;
  background: #fff;
  cursor: pointer;
}

button:hover {
  background: #ddd;
}

处理连续运算

改进运算逻辑以支持连续运算:

let currentInput = '';
let previousInput = '';
let operation = null;

function updateDisplay() {
  display.value = currentInput || '0';
}

function handleNumberInput(number) {
  currentInput = currentInput === '0' ? number : currentInput + number;
  updateDisplay();
}

function handleOperator(op) {
  if (currentInput && previousInput && operation) {
    compute();
  }
  operation = op;
  previousInput = currentInput;
  currentInput = '';
}

实现记忆功能

添加记忆功能存储计算结果:

const memory = {
  value: 0,
  add() {
    this.value += parseFloat(display.value) || 0;
  },
  subtract() {
    this.value -= parseFloat(display.value) || 0;
  },
  recall() {
    display.value = this.value;
  },
  clear() {
    this.value = 0;
  }
};

处理小数和负数

完善数字输入处理:

function handleDecimal() {
  if (!currentInput.includes('.')) {
    currentInput += currentInput ? '.' : '0.';
    updateDisplay();
  }
}

function handleSignChange() {
  currentInput = currentInput.startsWith('-') ? 
    currentInput.substring(1) : 
    '-' + currentInput;
  updateDisplay();
}

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

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…