使用JavaScript写一个网页端的四则运算器

目录

style(内联样式表部分)

body部分

html

script

总的代码

网页演示


style(内联样式表部分)

css 复制代码
 <style>
        body {
            font-family: Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background-color: #f0f0f0;
        }
        .calculator {
            padding: 20px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: white;
            width: 300px;
        }
        .input-group {
            display: flex;
            flex-direction: row;
            margin-bottom: 10px;
        }
        .input-group label {
            width: 100px;
            text-align: right;
            padding-right: 10px;
        }
        .input-group input {
            flex-grow: 1;
        }
        .result {
            margin-top: 20px;
            text-align: center;
        }
    </style>

设置了元素选择器(body)和很多类选择器。

font-family: 页面使用的字体

display: flex: 使用弹性盒子布局

justify-content: center: 内容居中对齐

align-items: center: 垂直居中对齐

height: 100vh: 高度为视口高度

background-color: 背景颜色

padding: 内边距

border: 边框样式

border-radius: 圆角

background-color: 背景颜色

width: 宽度

flex-direction: row: 子元素水平排列

margin-bottom: 下边距

text-align: right: 文本右对齐

padding-right: 右边距

flex-grow: 1: 填充剩余空间

text-align: 文本居中对齐

body部分

html

css 复制代码
 <div class="calculator">
        <h2>四则运算计算器</h2>
        <div class="input-group">
            <label for="num1">数字 1:</label>
            <input type="number" id="num1" required>
        </div>
        <div class="input-group">
            <label for="operator">运算符:</label>
            <select id="operator">
                <option value="+">+</option>
                <option value="-">-</option>
                <option value="*">*</option>
                <option value="/">/</option>
            </select>
        </div>
        <div class="input-group">
            <label for="num2">数字 2:</label>
            <input type="number" id="num2" required>
        </div>
        <button id="calculateButton">计算</button>
        <div class="result">
            <p>结果: <span id="result"></span></p>
        </div>

定义数字 1 的输入框:

label: 标签(num1)。

input: 输入框,类型为数字(number),要求必填(required)。

定义运算符的选择框:

label: 标签(operator)。

select: 下拉选择框(加减乘除四个选项)。

option: 选项。

定义数字 2 的输入框:

label: 标签(num2)。

input: 输入框,类型为数字(number),要求必填(required)。

提交按钮(button),用于触发计算操作。

定义结果(result)显示区域:

div: 包装元素result。

p: 段落,包含结果显示文本。

span: 用于显示计算结果。

script

css 复制代码
<script>
        // 获取元素引用
        var num1Input = document.getElementById("num1");
        var num2Input = document.getElementById("num2");
        var operatorSelect = document.getElementById("operator");
        var calculateButton = document.getElementById("calculateButton");
        var resultSpan = document.getElementById("result");
    
        // 添加点击事件监听器
        calculateButton.addEventListener('click', function() {
            var num1 = parseFloat(num1Input.value);
            var num2 = parseFloat(num2Input.value);
            var operator = operatorSelect.value;
    
            var result = performCalculation(num1, num2, operator);
            resultSpan.textContent = result;
        });
    
        // 计算函数
        function performCalculation(num1, num2, operator) {
            switch (operator) {
                case '+':
                    return num1 + num2;
                case '-':
                    return num1 - num2;
                case '*':
                    return num1 * num2;
                case '/':
                    if (num2 === 0) {
                        alert("除数不能为零!");
                        return null;
                    }
                    return num1 / num2;
                default:
                    alert("无效的运算符!");
                    return null;
            }
        }
    </script>
css 复制代码
        // 获取元素引用
        var num1Input = document.getElementById("num1");
        var num2Input = document.getElementById("num2");
        var operatorSelect = document.getElementById("operator");
        var calculateButton = document.getElementById("calculateButton");
        var resultSpan = document.getElementById("result");

定义5个变量获取页面上的各个元素引用:

num1Input: 数字 1 的输入框。

num2Input: 数字 2 的输入框。

operatorSelect: 运算符选择框。

calculateButton: 计算按钮。

resultSpan: 显示结果的 span 元素。

css 复制代码
  calculateButton.addEventListener('click', function() {
            var num1 = parseFloat(num1Input.value);
            var num2 = parseFloat(num2Input.value);
            var operator = operatorSelect.value;
    
            var result = performCalculation(num1, num2, operator);
            resultSpan.textContent = result;
        });

添加点击事件监听器:

如果用户点击了button,就将输入的num1赋值给num1,输入的num2赋值给num2,输入的运算符赋值给operator,将result使用performCalculation函数计算出,并将结果更新到页面的结果显示区域。

parseFloat: 将字符串转换为浮点数。

value: 获取输入框的值。

css 复制代码
 // 计算函数
        function performCalculation(num1, num2, operator) {
            switch (operator) {
                case '+':
                    return num1 + num2;
                case '-':
                    return num1 - num2;
                case '*':
                    return num1 * num2;
                case '/':
                    if (num2 === 0) {
                        alert("除数不能为零!");
                        return null;
                    }
                    return num1 / num2;
                default:
                    alert("无效的运算符!");
                    return null;
            }

计算函数:

检测不同的运算符,如果是加减乘就进行对应的运算,如果是除法要特判一下除数不能为0,如果为0就使用alert弹出警告。

如果输入的运算符不是加减乘除中的一种,同样要使用alert发出警告,无效的运算符。

总的代码

css 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>四则运算计算器</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background-color: #f0f0f0;
        }
        .calculator {
            padding: 20px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: white;
            width: 300px;
        }
        .input-group {
            display: flex;
            flex-direction: row;
            margin-bottom: 10px;
        }
        .input-group label {
            width: 100px;
            text-align: right;
            padding-right: 10px;
        }
        .input-group input {
            flex-grow: 1;
        }
        .result {
            margin-top: 20px;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="calculator">
        <h2>四则运算计算器</h2>
        <div class="input-group">
            <label for="num1">数字 1:</label>
            <input type="number" id="num1" required>
        </div>
        <div class="input-group">
            <label for="operator">运算符:</label>
            <select id="operator">
                <option value="+">+</option>
                <option value="-">-</option>
                <option value="*">*</option>
                <option value="/">/</option>
            </select>
        </div>
        <div class="input-group">
            <label for="num2">数字 2:</label>
            <input type="number" id="num2" required>
        </div>
        <button id="calculateButton">计算</button>
        <div class="result">
            <p>结果: <span id="result"></span></p>
        </div>
    </div>

    <script>
        // 获取元素引用
        var num1Input = document.getElementById("num1");
        var num2Input = document.getElementById("num2");
        var operatorSelect = document.getElementById("operator");
        var calculateButton = document.getElementById("calculateButton");
        var resultSpan = document.getElementById("result");
    
        // 添加点击事件监听器
        calculateButton.addEventListener('click', function() {
            var num1 = parseFloat(num1Input.value);
            var num2 = parseFloat(num2Input.value);
            var operator = operatorSelect.value;
    
            var result = performCalculation(num1, num2, operator);
            resultSpan.textContent = result;
        });
    
        // 计算函数
        function performCalculation(num1, num2, operator) {
            switch (operator) {
                case '+':
                    return num1 + num2;
                case '-':
                    return num1 - num2;
                case '*':
                    return num1 * num2;
                case '/':
                    if (num2 === 0) {
                        alert("除数不能为零!");
                        return null;
                    }
                    return num1 / num2;
                default:
                    alert("无效的运算符!");
                    return null;
            }
        }
    </script>
</body>
</html>

网页演示

相关推荐
Ling_suu2 分钟前
SpringBoot3——Web开发
java·服务器·前端
Yvemil79 分钟前
《开启微服务之旅:Spring Boot Web开发》(二)
前端·spring boot·微服务
hanglove_lucky11 分钟前
本地摄像头视频流在html中打开
前端·后端·html
维李设论14 分钟前
Node.js的Web服务在Nacos中的实践
前端·spring cloud·微服务·eureka·nacos·node.js·express
2401_8576009521 分钟前
基于 SSM 框架 Vue 电脑测评系统:赋能电脑品质鉴定
前端·javascript·vue.js
天之涯上上25 分钟前
Pinia 是一个专为 Vue.js 3 设计的状态管理库
前端·javascript·vue.js
@大迁世界32 分钟前
摆脱 `<div>`!7 种更语义化的 HTML 标签替代方案
前端·html
高山我梦口香糖1 小时前
[react] <NavLink>自带激活属性
前端·javascript·react.js
撸码到无法自拔1 小时前
React:组件、状态与事件处理的完整指南
前端·javascript·react.js·前端框架·ecmascript
高山我梦口香糖1 小时前
[react]不能将类型“string | undefined”分配给类型“To”。 不能将类型“undefined”分配给类型“To”
前端·javascript·react.js