当前位置:首页 > JavaScript

js实现计算器代码

2026-04-04 09:36:43JavaScript

基础HTML结构

创建计算器的基本HTML结构,包含显示屏和按钮区域:

<div id="calculator">
  <input type="text" id="display" disabled>
  <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="clearDisplay()">C</button>
    <button onclick="appendToDisplay('+')">+</button>

    <button onclick="calculate()">=</button>
  </div>
</div>

CSS样式设计

为计算器添加基本样式:

#calculator {
  width: 200px;
  margin: 0 auto;
  padding: 20px;
  background: #f3f3f3;
  border-radius: 10px;
}

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

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

button {
  padding: 10px;
  font-size: 18px;
  border: none;
  border-radius: 5px;
  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 = String(result);
  } catch (error) {
    document.getElementById('display').value = 'Error';
    currentInput = '';
  }
}

高级功能扩展

增加键盘支持功能:

document.addEventListener('keydown', function(event) {
  const key = event.key;

  if (/[0-9+\-*/.=]/.test(key)) {
    if (key === '=' || key === 'Enter') {
      calculate();
    } else {
      appendToDisplay(key);
    }
  } else if (key === 'Escape') {
    clearDisplay();
  } else if (key === 'Backspace') {
    currentInput = currentInput.slice(0, -1);
    document.getElementById('display').value = currentInput;
  }
});

安全改进方案

替换eval()实现更安全的计算:

function safeCalculate(expression) {
  const operators = ['+', '-', '*', '/'];
  const parts = expression.split(/([+\-*/])/);

  let result = parseFloat(parts[0]);

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

    if (operators.includes(operator) && !isNaN(operand)) {
      switch(operator) {
        case '+': result += operand; break;
        case '-': result -= operand; break;
        case '*': result *= operand; break;
        case '/': result /= operand; break;
      }
    } else {
      throw new Error('Invalid expression');
    }
  }

  return result;
}

完整实现示例

将上述代码整合到HTML文件中:

js实现计算器代码

<!DOCTYPE html>
<html>
<head>
  <style>
    /* 之前提供的CSS样式 */
  </style>
</head>
<body>
  <!-- 之前提供的HTML结构 -->

  <script>
    // 之前提供的JavaScript代码
    // 替换calculate()函数中的eval为safeCalculate
  </script>
</body>
</html>

标签: 计算器代码
分享给朋友:

相关文章

淘宝css代码制作

淘宝css代码制作

在淘宝店铺装修中,CSS代码用于自定义页面样式,提升视觉体验。以下是关键方法和注意事项: 自定义模块样式 通过淘宝旺铺的“自定义模块”功能,可以插入CSS代码。代码需包裹在<style>…

php实现文件下载代码

php实现文件下载代码

实现文件下载的基本方法 使用PHP实现文件下载的核心是通过设置HTTP头部信息,强制浏览器触发下载行为而非直接显示文件内容。 $file_path = 'path/to/your/file.ext'…

vue拖拽实现低代码

vue拖拽实现低代码

Vue拖拽实现低代码方案 基于现成库的方案(推荐) 使用成熟的拖拽库可以快速实现低代码功能,例如: vuedraggable:基于Sortable.js的Vue拖拽组件 vue-draggable-…

vue实现左右滑动代码

vue实现左右滑动代码

以下是一个基于 Vue 3 实现左右滑动功能的代码示例,结合手势识别和动画效果: 基础实现(使用 CSS 和事件监听) <template> <div class="slide…

vue实现代码实例

vue实现代码实例

以下是一个基于 Vue 3 的完整代码实例,包含核心功能实现和常见开发场景的示例: 基础组件示例 <template> <div> <h1>{{ ti…

vue 实现点击复制 代码

vue 实现点击复制 代码

vue 实现点击复制功能 使用Vue实现点击复制功能可以通过原生JavaScript的document.execCommand或现代的Clipboard API。以下是几种常见实现方式: 使用doc…