当前位置:首页 > JavaScript

js实现简单计算器

2026-01-30 16:21:45JavaScript

实现基础功能

创建一个HTML文件,包含数字按钮、运算符按钮和显示结果的输入框。基本结构如下:

<!DOCTYPE html>
<html>
<head>
    <title>简易计算器</title>
    <style>
        #calculator {
            width: 200px;
            margin: 0 auto;
            text-align: center;
        }
        button {
            width: 40px;
            height: 40px;
            margin: 5px;
        }
        #result {
            width: 180px;
            height: 40px;
            margin-bottom: 10px;
            text-align: right;
        }
    </style>
</head>
<body>
    <div id="calculator">
        <input type="text" id="result" readonly>
        <button onclick="appendToResult('7')">7</button>
        <button onclick="appendToResult('8')">8</button>
        <button onclick="appendToResult('9')">9</button>
        <button onclick="appendToResult('/')">/</button>
        <button onclick="appendToResult('4')">4</button>
        <button onclick="appendToResult('5')">5</button>
        <button onclick="appendToResult('6')">6</button>
        <button onclick="appendToResult('*')">*</button>
        <button onclick="appendToResult('1')">1</button>
        <button onclick="appendToResult('2')">2</button>
        <button onclick="appendToResult('3')">3</button>
        <button onclick="appendToResult('-')">-</button>
        <button onclick="appendToResult('0')">0</button>
        <button onclick="appendToResult('.')">.</button>
        <button onclick="calculate()">=</button>
        <button onclick="appendToResult('+')">+</button>
        <button onclick="clearResult()">C</button>
    </div>
    <script src="calculator.js"></script>
</body>
</html>

JavaScript逻辑实现

创建calculator.js文件,实现计算器核心功能:

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 backspace() {
    currentInput = currentInput.slice(0, -1);
    document.getElementById('result').value = currentInput;
}

// 添加键盘支持
document.addEventListener('keydown', function(event) {
    const key = event.key;
    if (/[0-9+\-*/.=]/.test(key)) {
        if (key === '=' || key === 'Enter') {
            calculate();
        } else {
            appendToResult(key);
        }
    } else if (key === 'Backspace') {
        backspace();
    } else if (key === 'Escape') {
        clearResult();
    }
});

安全改进

使用更安全的计算方式替代eval:

function safeCalculate() {
    try {
        // 使用Function构造函数比eval更安全
        const result = new Function('return ' + currentInput)();
        if (isNaN(result) || !isFinite(result)) {
            throw new Error('Invalid calculation');
        }
        document.getElementById('result').value = result;
        currentInput = result.toString();
    } catch (error) {
        document.getElementById('result').value = 'Error';
        currentInput = '';
    }
}

完整代码整合

将上述改进整合到最终版本:

let currentInput = '';

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

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

function backspace() {
    currentInput = currentInput.slice(0, -1);
    document.getElementById('result').value = currentInput;
}

function calculate() {
    try {
        const result = new Function('return ' + currentInput)();
        if (isNaN(result) || !isFinite(result)) {
            throw new Error('Invalid calculation');
        }
        document.getElementById('result').value = result;
        currentInput = result.toString();
    } catch (error) {
        document.getElementById('result').value = 'Error';
        currentInput = '';
    }
}

document.addEventListener('keydown', function(event) {
    const key = event.key;
    if (/[0-9+\-*/.=]/.test(key)) {
        event.preventDefault();
        if (key === '=' || key === 'Enter') {
            calculate();
        } else {
            appendToResult(key);
        }
    } else if (key === 'Backspace') {
        event.preventDefault();
        backspace();
    } else if (key === 'Escape') {
        event.preventDefault();
        clearResult();
    }
});

这个实现包含了基础计算功能、键盘支持、错误处理和基本样式,可以根据需要进一步扩展功能或改进界面设计。

标签: 计算器简单
分享给朋友:

相关文章

实现简单vue

实现简单vue

实现一个简单的 Vue 框架 数据响应式系统 通过 Object.defineProperty 实现数据劫持,监听数据变化: function defineReactive(obj, key, v…

vue实现简单搜索

vue实现简单搜索

Vue 实现简单搜索功能 数据绑定与输入框 在 Vue 中实现搜索功能,通常使用 v-model 绑定输入框的值到数据属性。创建一个输入框用于用户输入搜索关键词: <template>…

vue 实现简单登录

vue 实现简单登录

实现 Vue 简单登录功能 创建登录组件 在 Vue 项目中创建一个登录组件 Login.vue,包含用户名和密码输入框以及登录按钮。 <template> <div clas…

vue实现简单拖拽

vue实现简单拖拽

Vue 实现简单拖拽功能 在 Vue 中实现拖拽功能可以通过 HTML5 的拖放 API 或第三方库(如 vuedraggable)来完成。以下是两种常见的实现方式: 使用 HTML5 拖放 A…

vue实现简单登录

vue实现简单登录

使用 Vue 实现简单登录功能 创建 Vue 项目 确保已安装 Vue CLI,通过以下命令创建新项目: vue create vue-login-demo 选择默认配置或手动配置(如 Babel…

vue简单实现删除

vue简单实现删除

Vue 删除功能实现 使用 v-for 和 splice 方法删除数组元素 <template> <div> <ul> <li v-…