当前位置:首页 > JavaScript

js实现计算器功能

2026-01-30 20:10:28JavaScript

实现基础计算器功能

使用HTML、CSS和JavaScript创建一个基础计算器,支持加减乘除运算。以下是核心代码示例:

HTML结构

<div class="calculator">
  <input type="text" id="display" readonly>
  <div class="keys">
    <button onclick="appendToDisplay('7')">7</button>
    <button onclick="appendToDisplay('8')">8</button>
    <!-- 其他数字按钮 -->
    <button onclick="calculate()">=</button>
  </div>
</div>

JavaScript逻辑

let currentInput = '';

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

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

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

增强型计算器实现

对于更复杂的计算器,建议避免使用eval()并实现更安全的计算逻辑:

const operators = {
  '+': (a, b) => a + b,
  '-': (a, b) => a - b,
  '*': (a, b) => a * b,
  '/': (a, b) => a / b
};

function safeCalculate(expression) {
  const tokens = expression.split(/([+\-*/])/).filter(token => token.trim() !== '');
  let result = parseFloat(tokens[0]);

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

  return result;
}

处理连续运算

实现记忆功能以支持连续运算:

let memory = 0;
let lastOperator = null;

function handleOperation(op) {
  const displayValue = parseFloat(document.getElementById('display').value);

  if (lastOperator) {
    memory = operators[lastOperator](memory, displayValue);
  } else {
    memory = displayValue;
  }

  lastOperator = op;
  document.getElementById('display').value = '';
}

添加科学计算功能

扩展计算器支持平方、开方等运算:

function scientificOperation(op) {
  const displayValue = parseFloat(document.getElementById('display').value);
  let result;

  switch(op) {
    case 'sqrt': result = Math.sqrt(displayValue); break;
    case 'square': result = Math.pow(displayValue, 2); break;
    // 其他科学运算
  }

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

界面优化建议

  1. 使用CSS Grid或Flexbox布局按钮
  2. 添加按钮悬停和点击效果
  3. 实现响应式设计适应不同屏幕
  4. 添加动画过渡效果提升用户体验
.calculator {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  max-width: 300px;
}

button {
  padding: 15px;
  font-size: 18px;
  transition: all 0.2s;
}

button:hover {
  background-color: #ddd;
}

错误处理增强

添加更完善的输入验证和错误处理:

function validateInput(input) {
  // 检查连续运算符
  if (/[+\-*/]{2,}/.test(input)) return false;

  // 检查除零错误
  if (/\/0(?:\.0*)?([+\-*/]|$)/.test(input)) return false;

  return true;
}

function calculate() {
  if (!validateInput(currentInput)) {
    alert('Invalid expression');
    return;
  }

  // 安全计算逻辑
}

js实现计算器功能

标签: 计算器功能
分享给朋友:

相关文章

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件…

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaS…

vue 实现 功能

vue 实现 功能

Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用程序。以下是一些常见的 Vue 功能实现方法: 数据绑定 Vue 的核心特性之一是数据绑定,可以通过 v-model 指令实现双向数据绑…

uniapp实现选项卡功能

uniapp实现选项卡功能

实现选项卡功能的基本方法 在uniapp中实现选项卡功能通常需要使用uni-segmented-control组件或自定义样式结合swiper组件。以下是两种常见实现方式: 使用uni-segme…

vue实现付费功能

vue实现付费功能

Vue 实现付费功能的方法 集成第三方支付平台 选择适合的第三方支付平台(如支付宝、微信支付、Stripe、PayPal等),并按照其文档进行集成。在 Vue 项目中,可以通过引入支付平台的 SDK…

vue实现模态功能

vue实现模态功能

Vue 实现模态框功能 方法一:使用组件和v-if/v-show控制显示 创建独立的模态框组件(如Modal.vue),通过props接收标题、内容等数据,使用v-if或v-show控制显示状态。…