当前位置:首页 > JavaScript

js实现点击计算器

2026-01-31 05:59:37JavaScript

实现点击计算器的基本结构

使用HTML、CSS和JavaScript创建一个简单的点击计算器。HTML负责结构,CSS负责样式,JavaScript处理逻辑。

js实现点击计算器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>点击计算器</title>
    <style>
        .calculator {
            width: 200px;
            margin: 0 auto;
            padding: 20px;
            border: 1px solid #ccc;
            border-radius: 5px;
        }
        .display {
            width: 100%;
            height: 40px;
            margin-bottom: 10px;
            text-align: right;
            font-size: 20px;
        }
        .buttons {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 10px;
        }
        button {
            height: 40px;
            font-size: 18px;
        }
    </style>
</head>
<body>
    <div class="calculator">
        <input type="text" class="display" disabled>
        <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>=</button>
            <button>/</button>
            <button>C</button>
        </div>
    </div>
    <script src="calculator.js"></script>
</body>
</html>

JavaScript逻辑实现

创建一个calculator.js文件,实现计算器的功能逻辑。

document.addEventListener('DOMContentLoaded', function() {
    const display = document.querySelector('.display');
    const buttons = document.querySelectorAll('button');
    let currentInput = '';
    let previousInput = '';
    let operation = null;

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

            if (value >= '0' && value <= '9') {
                currentInput += value;
                display.value = currentInput;
            } else if (value === '.') {
                if (!currentInput.includes('.')) {
                    currentInput += value;
                    display.value = currentInput;
                }
            } else if (value === 'C') {
                currentInput = '';
                previousInput = '';
                operation = null;
                display.value = '';
            } else if (value === '=') {
                if (previousInput && currentInput && operation) {
                    currentInput = calculate(previousInput, currentInput, operation);
                    display.value = currentInput;
                    previousInput = '';
                    operation = null;
                }
            } else {
                if (currentInput) {
                    if (previousInput) {
                        previousInput = calculate(previousInput, currentInput, operation);
                        display.value = previousInput;
                    } else {
                        previousInput = currentInput;
                    }
                    operation = value;
                    currentInput = '';
                }
            }
        });
    });

    function calculate(a, b, op) {
        a = parseFloat(a);
        b = parseFloat(b);
        switch (op) {
            case '+': return a + b;
            case '-': return a - b;
            case '*': return a * b;
            case '/': return a / b;
            default: return b;
        }
    }
});

功能扩展与优化

为计算器添加更多功能,如键盘支持、错误处理等。

document.addEventListener('keydown', function(event) {
    const key = event.key;
    if (key >= '0' && key <= '9') {
        document.querySelector(`button:contains('${key}')`).click();
    } else if (key === '.') {
        document.querySelector(`button:contains('.')`).click();
    } else if (key === '+' || key === '-' || key === '*' || key === '/') {
        document.querySelector(`button:contains('${key}')`).click();
    } else if (key === 'Enter') {
        document.querySelector(`button:contains('=')`).click();
    } else if (key === 'Escape') {
        document.querySelector(`button:contains('C')`).click();
    }
});

function calculate(a, b, op) {
    a = parseFloat(a);
    b = parseFloat(b);
    if (isNaN(a) || isNaN(b)) return '';
    switch (op) {
        case '+': return (a + b).toString();
        case '-': return (a - b).toString();
        case '*': return (a * b).toString();
        case '/': 
            if (b === 0) {
                alert('除数不能为零');
                return '';
            }
            return (a / b).toString();
        default: return b.toString();
    }
}

注意事项

  1. 确保HTML中的按钮文本与JavaScript中的判断条件匹配。
  2. 处理除以零的情况,避免程序崩溃。
  3. 考虑添加更多运算功能,如百分比、平方根等。
  4. 可以进一步优化界面,添加响应式设计。

通过以上步骤,可以实现一个功能完整的点击计算器。用户可以通过鼠标点击或键盘输入进行操作,支持基本的四则运算和清除功能。

js实现点击计算器

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

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Pa…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…