首页 > 编程语言 >JavaScript题目三 制作简易计算器

JavaScript题目三 制作简易计算器

时间:2024-11-11 12:15:00浏览次数:3  
标签:题目 currentInput color button JavaScript value 按钮 display 计算器

目标:

  1. 提供四个基本的运算功能:加、减、乘、除。
  2. 支持数字输入和运算符输入。
  3. 显示结果。

1. HTML 文件 (index.html)

<!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;
            margin: 0;
            background-color: #f4f4f4;
        }
        .calculator {
            background-color: #fff;
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        #display {
            width: 240px;
            height: 50px;
            font-size: 24px;
            text-align: right;
            padding: 10px;
            margin-bottom: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #eaeaea;
        }
        .button-container {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 10px;
        }
        .button {
            padding: 20px;
            font-size: 18px;
            background-color: #f1f1f1;
            border: 1px solid #ccc;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        .button:hover {
            background-color: #e0e0e0;
        }
        .button:active {
            background-color: #ccc;
        }
        .button.operator {
            background-color: #f0a500;
            color: white;
        }
        .button.operator:hover {
            background-color: #d98e00;
        }
        .button.double {
            grid-column: span 2;
        }
        .button.clear {
            background-color: #ff5252;
            color: white;
        }
        .button.clear:hover {
            background-color: #e04747;
        }
    </style>
</head>
<body>

<div class="calculator">
    <input type="text" id="display" disabled>
    <div class="button-container">
        <button class="button clear" id="clear">C</button>
        <button class="button operator" id="divide">/</button>
        <button class="button operator" id="multiply">*</button>
        <button class="button operator" id="subtract">-</button>
        <button class="button" id="7">7</button>
        <button class="button" id="8">8</button>
        <button class="button" id="9">9</button>
        <button class="button operator" id="add">+</button>
        <button class="button" id="4">4</button>
        <button class="button" id="5">5</button>
        <button class="button" id="6">6</button>
        <button class="button double" id="equals">=</button>
        <button class="button" id="1">1</button>
        <button class="button" id="2">2</button>
        <button class="button" id="3">3</button>
        <button class="button" id="0">0</button>
        <button class="button" id="decimal">.</button>
    </div>
</div>

<script src="calculator.js"></script>

</body>
</html>

2. JavaScript 文件 (calculator.js)

// 获取显示屏和所有按钮
const display = document.getElementById('display');
const buttons = document.querySelectorAll('.button');
const clearButton = document.getElementById('clear');
const equalsButton = document.getElementById('equals');

// 用于存储当前显示的计算表达式
let currentInput = '';

// 为每个按钮添加事件监听器
buttons.forEach(button => {
    button.addEventListener('click', () => {
        const value = button.textContent;

        // 如果点击了数字或小数点
        if (!isNaN(value) || value === '.') {
            currentInput += value;
            display.value = currentInput;
        }
        // 如果点击了运算符
        else if (['+', '-', '*', '/'].includes(value)) {
            currentInput += ` ${value} `;
            display.value = currentInput;
        }
        // 如果点击了等于按钮,计算结果
        else if (value === '=') {
            try {
                // 使用 eval 计算表达式的值
                currentInput = eval(currentInput).toString();
                display.value = currentInput;
            } catch (e) {
                display.value = '错误';
                currentInput = '';
            }
        }
    });
});

// 清空显示屏的功能
clearButton.addEventListener('click', () => {
    currentInput = '';
    display.value = '';
});

解释:

HTML 结构
  1. 计算器界面

    • 一个 input 元素用于显示当前的输入和结果,id="display",并设置为不可编辑(disabled)。
    • 一个 div 容器(button-container)包含了所有的计算器按钮,包括数字按钮、运算符按钮、清除按钮、等于按钮等。
  2. 样式

    • 使用 CSS 来布局和美化计算器,使用 grid 来使按钮有规则地排列。
    • 特别为运算符按钮添加了一个 .operator 类,使其背景颜色不同于数字按钮。
JavaScript 逻辑
  1. 获取元素

    • display 是用于显示输入和结果的文本框。
    • buttons 是所有的按钮,通过 querySelectorAll 获取。
  2. 按钮事件监听

    • 数字和小数点按钮:当用户点击数字或小数点按钮时,将值添加到 currentInput,然后更新显示屏。
    • 运算符按钮:当用户点击运算符(如 +、-、*、/)时,运算符会被添加到 currentInput,并在显示屏上显示。
    • 等于按钮:当用户点击等于按钮时,使用 eval() 函数计算 currentInput 表达式的值。如果计算成功,显示结果;如果有错误(例如输入了非法表达式),显示“错误”并清空输入。
    • 清除按钮:点击清除按钮时,清空当前输入和显示屏。
  3. 错误处理

    • 使用 try...catch 语句来捕获错误并显示“错误”,防止用户输入无效的表达式导致程序崩溃。

运行效果:

  • 你将看到一个简单的计算器界面,能够进行加、减、乘、除等基本计算。
  • 用户可以点击数字、运算符按钮,输入表达式并点击“=”来获取计算结果。
  • 点击“C”按钮可以清空输入框。

总结:

  • 这个计算器应用实现了基础的加减乘除运算,使用了 HTML、CSS 和 JavaScript。
  • 通过分离 HTML、CSS 和 JavaScript,使得代码结构清晰,便于维护。
  • 使用 eval() 进行简单的数学表达式求值,但在实际生产中,应该避免使用 eval(),因为它会带来安全风险。

4o mini

标签:题目,currentInput,color,button,JavaScript,value,按钮,display,计算器
From: https://blog.csdn.net/wtt12344321/article/details/143656322

相关文章

  • C小题目:有一个一维数组score,放10个学生的成绩,求平均成绩。
    #include<stdio.h>intaverage(intx[],intlen){inti,sum=0;for(i=0;i<len;i++){sum+=x[i];printf("%d\n",x[i]);};inta=sum/len;printf("theaverageis%d\n",a);};intmain(){......
  • C小题目-输入10个数,要求输出其中值最大的元素和该数是第几个数
    #include<stdio.h>intmax(intx,inty){returnx>y?x:y;};intmain(){inta[10];inti,m,n;for(i=0;i<10;i++){printf("请输入第%d个数:",i);scanf("%d",&a[i]);};for(i=0,m=a[0],n=......
  • JavaScript变量
    变量是用于存储信息的"容器"。实例varx=5;vary=6;varz=x+y;尝试一下»就像代数那样x=5y=6z=x+y在代数中,我们使用字母(比如x)来保存值(比如5)。通过上面的表达式z=x+y,我们能够计算出z的值为11。在JavaScript中,这些字母被称为变量。您可以把变量看做存储数......
  • JavaScript语法
    JavaScript 语法JavaScript是一个程序语言。语法规则定义了语言结构。JavaScript语法JavaScript是一个脚本语言。它是一个轻量级,但功能强大的编程语言。JavaScript字面量在编程语言中,一般固定值称为字面量,如3.14。数字(Number)字面量 可以是整数或者是小数,或者是科......
  • JavaScript语法进阶:事件监听与处理
    一、概述事件定义了用户与网页交互时产生的各种操作。例如,单击按钮时,就产生一个事件,告诉浏览器发生了需要进行处理的单击操作。为了使对象能够对某一事件做出响应,就必须编写事件处理函数。事件处理函数是一段独立的程序代码,它在对象检测到某个特定事件时执行(响应该事件)。一个......
  • JavaScript(JS)函数的使用(二)
    12、函数函数名相同时后面的函数覆盖前面的函数;在JS中实参的个数和形参的个数可以不一致;如果形参过多,会自动填上undefined;如果实参过多,多余的实参会被忽略;函数遇到return就不向下执行,函数的结束用return。1.1函数的声明与调用<script>functionwriteText()......
  • docker的使用(使用docker部署ctf题目)
    最近实验室要举办一次ctf竞赛,本人web手兼杂项手,杂项的题在服务器上传附件就行,比较好弄,然后web的题目需要docker部署,就学了一下docker,前前后后忙了一天多,做了很多无用功。我太菜鸡了。记录一下配置过程还有docker的一些知识点。(学习尚浅,希望路过的大佬多多指导)0X01什么是DockerD......
  • P2893 [USACO08FEB] Making the Grade G 题目分析
    P2893[USACO08FEB]MakingtheGradeG题目分析题目链接分析题目性质不难解析出题目中的序列\(B\)有“单调不下降”和“单调不上升”两种情况,不难想到分两种情况讨论答案即可。有一个性质:在满足答案最小化的情况,一定存在一种方案使得\(B\)中的数字一定在\(A\)中。......
  • SQL,力扣题目1159,市场分析 II
    一、力扣链接LeetCode_1159二、题目描述表: Users+----------------+---------+|ColumnName|Type|+----------------+---------+|user_id|int||join_date|date||favorite_brand|varchar|+----------------+---------+us......
  • SQL,力扣题目262,行程和用户
    一、力扣链接LeetCode_262二、题目描述表:Trips+-------------+----------+|ColumnName|Type|+-------------+----------+|id|int||client_id|int||driver_id|int||city_id|int||status|enum......