JS原生——编写简易计算器

article/2025/10/20 7:51:57

一个非常适合新手练习的小案例!!!

使用JS的ES5语法+HTML+CSS及企业级代码规范,方便后续良好的代码习惯养成!!!

先来看一下样式吧!!!(后附代码)

👇👇👇👇

一、设计思路

  • 实现功能:加减乘除运输、清空、清空末位
  • 结构:整体使用table表格,按钮部分使用button给对应的属性值在JS中获取,输入框/输出框使用input给固定的长度及不可编辑。
  • 样式:可自行设计修改。
  • 逻辑:因为使用了eval()方法在首位及末位默认不可输入运算符,运算符的下一位不能是运算符。

二、关于代码规范方面需要注意的

  1. 在ES5中为防止代码命名污染全局。参照函数是独立作用域的原则使用立即执行函数形成独立的作用域即模块化编程。
  2. 在ES5中不宜频繁操作DOM元素使用传参的方式传入获取父级,其他子级在父级下操作。
  3. 创建 init(初始化函数)来统一管理其他函数。
  4. 尽量遵照一个功能及一个函数原则可提起工具函数。(😳这个案例函数不复杂没做)

三、使用到的JS方法

  1. 基础的for循环。
  2. Number()转换数字格式。
  3. +=复合赋值运算符。
  4. .length获取字符串长度
  5. substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
  6. slice() 方法可通过指定的开始和结束位置,提取字符串的某个部分,并以新的字符串返回被提取的部分。
  7. eval()将可运算的表达式进行运算。

四、代码部分

  1、HTML

<div class="calculator"><table><tr><td colspan="5"><input type="text" class="result" disabled="disabled"></td></tr><tr><td><button value="7">7</button></td><td><button value="8">8</button></td><td><button value="9">9</button></td><td><button class="del-button ac">AC</button></td><td><button class="del-button c">C</button></td></tr><tr><td><button value="4">4</button></td><td><button value="5">5</button></td><td><button value="6">6</button></td><td><button value="-" class="operator">-</button></td><td><button value="*" class="operator">*</button></td></tr><tr><td><button value="1">1</button></td><td><button value="2">2</button></td><td><button value="3">3</button></td><td rowspan="2"><button value="+" class="add operator">+</button></td><td><button value="/" class="operator">/</button></td></tr><tr><td><button value="0">0</button></td><td><button value=".">.</button></td><td><button value="00">00</button></td><td><button class="equal-button">=</button></td></tr></table></div>

2、css

* {margin: 0;padding: 0;}.calculator {padding: 30px;}td {width: 20%;padding: 5px;}table {border-radius: 16px;background: #EAECF3;padding: 5px;}button {width: 100%;height: 40px;border: 0;border-radius: 16px;box-shadow: inset 1px 1px 1px 0px rgb(230 244 255 / 80%), inset -1px -1px 1px 0px rgb(40 48 85 / 30%), 1px 1px 3px 0px rgb(40 50 85 / 10%);user-select: none;color: #283155;text-shadow: 2px 1px 1px rgb(0 0 0 / 10%);opacity: 2 !important;cursor: pointer;background-image: linear-gradient(135deg, #F4F5F6, #fff);font-size: 16px;}input {height: 56px;font-size: 20px;border: 0;border-radius: 18px;background: #fff;box-shadow: inset -1px -1px 1px 0 rgb(223 255 257 / 70%);box-shadow: inset 1px 1px 1px 0 rgb(40 49 86 / 30%);overflow: hidden;}.add {height: 90px;}.operator {background-image: linear-gradient(133deg, #D9DCE8, #E2E4EF);}.del-button {background-image: linear-gradient(133deg, #FFA80E, #FFC355);color: #fff;}.equal-button {box-shadow: inset 1px 1px 1px 0px rgb(223 255 255 / 21%), inset -2px -2px 1px 0px rgb(40 49 85 / 30%), 1px 1px 3px 0px rgb(157 174 167 / 20%);background: #4f6ef2;color: #fff;}.result {padding-left: 10px;}

3、JS

; (function (doc) {var oCalculator = doc.getElementsByClassName('calculator')[0],oResult = oCalculator.getElementsByClassName("result")[0],btnGroup = oCalculator.getElementsByTagName('button'),btnEqual = oCalculator.getElementsByClassName("equal-button")[0],ac = oCalculator.getElementsByClassName("ac")[0],c = oCalculator.getElementsByClassName("c")[0],strRest = '';var init = function () {bindEvents()}function bindEvents() {for (let i = 0; i <= btnGroup.length - 1; i++) {btnGroup[i].addEventListener('click', computed, false)}btnEqual.addEventListener('click', equal, false)ac.addEventListener('click', empty, false)c.addEventListener('click', fDelete, false)}function computed(ev) {var e = ev || window.event,value = e.target.value;if (strRest.length === 0) {if (Number(value)) {strRest += value;renderResult()}} else if (strRest.length < 15) {if (oResult.value.substr(-1) === '+' || oResult.value.substr(-1) === '-' || oResult.value.substr(-1) === '*' || oResult.value.substr(-1) === '/') {if (Number(value)) {strRest += value;renderResult()}} else {strRest += value;renderResult()}} else if (strRest.length === 15) {if (Number(value)) {strRest += value;renderResult()}}}function renderResult() {oResult.value = strRest}function equal() {oResult.value = eval(strRest);strRest = oResult.value;}function empty() {strRest = '';oResult.value = strRest;}function fDelete() {strRest = strRest.slice(0, strRest.length - 1);oResult.value = strRest;}init()})(document)


http://chatgpt.dhexx.cn/article/TqsEVM3q.shtml

相关文章

Java 实现简易计算器

前言&#xff1a; 出此文章是因为楼主之前在面试中遇到一个笔试题&#xff0c;当时一时半会没想出来&#xff0c;所以后续研究出来了&#xff0c;发出来希望对大家能有所帮助~ 题目&#xff1a;设计一个计算器&#xff0c;可以接收用户输入两个数字与 - * / 的符号&#xff0c…

Matlab设计简易计算器

效果如如下&#xff1a; 整个工程还是挺简单的&#xff0c;之前一直都是用matlab做信号处理&#xff0c;由于要做课程设计&#xff0c;就学了一下matlab的GUI。下面总结几个关键的地方。 &#xff08;1&#xff09;控件拉到自己喜欢的位置&#xff0c;并将控件的Text和Tag改好…

简易计算器(有界面)

&#xff08;没有括号和优先级&#xff0c;简易计算器&#xff09;界面&#xff1a; package javaprogram;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import j…

Andriod设计简易计算器

1&#xff0e;设计任务及要求 &#xff08;1&#xff09;设计一款基于Android系统下的计算器&#xff0c;实现加减乘除算法&#xff0c;以及清零、撤销操作。界面设计应该就尽量简洁而美观&#xff0c;具有良好的交互性&#xff0c;程序应具有较好的稳健性&#xff1b; &a…

java实现简易计算器

Java简易计算器 用java语言写的一个简易计算器&#xff0c;实现了最基本的、-、*、/ 运算。 先来看下效果&#xff1a; 界面简述&#xff1a; 整个面板的由一个JTextFiled组件16个JButton组件构成&#xff0c;外加一个JPanel组件存放16个按钮&#xff0c;其布局为4x4的网格…

做一个简易计算器(VB版)

今天小编来带大家用VB做一个简易计算器 废话不多说&#xff0c;下面就是具体步骤了 1、创建控件组的方法首先创建一个命令按钮&#xff0c;调整其大小&#xff08;觉得合适就行&#xff09;&#xff0c;名称为Command1&#xff0c;Caption 属性为数字 0 &#xff1b;然后进行…

简易计算器的设计_C#课程设计

以下内容可且仅可供参考&#xff0c;如有错误欢迎指正。 部分内容借鉴自百度 侵删致歉 位切换键盘的实现用了复杂的拖64给label的方法&#xff0c;此功能可以在自己计算机上的计算器里找到。 目录 一、设计简介 1.设计背景 2.开发工具及环境 二、需求分析 1.设计功能要求 …

Python制作简易计算器(GUI)---Tkinter

Python制作简易计算器&#xff08;GUI&#xff09;---Tkinter Tkinter简介Tkinter 与 PyQt5 的比较TkinterPyQt5 项目展示导入模块函数封装1. 运算公式的拼接与展示2. 将显示框的内容删除3. 使用eval()函数对表达式求值 主逻辑1. 布局窗口2. 布局表达式展示区域3. 布局按钮 代码…

自制个性计算器

一、布局文件xml的制作。 如图&#xff1a;是布局之后的一个效果图 完全可以自定义自己喜欢的各种类型的图片。 代码如下&#xff1a; 正所谓每一个鲜艳靓丽app背后都有成堆的代码支撑这句话是没有错的。由于没有长截屏软件只能用短截屏了&#xff0c;大家谅解一下&#…

C++简易计算器的实现

定义&#xff1a; 计算器是近代人发明的可以进行数字运算的机器。 也就是说&#xff0c;计算器不等同于算盘&#xff0c;前者能自行运算&#xff0c;后者只能简便计算过程&#xff0c;在古代,人们发明了许多计算工具,如算筹、算盘、计算尺等,随着社会的发展和科技的进步,计算…

制作简易计算器

简易计算器 效果展示图项目要求内容分析涉及函数 效果展示图 项目要求 制作简易计算器&#xff0c;使其能实现简单的加&#xff0c;减&#xff0c;乘&#xff0c;除运算。 1.在两个文本框中分别输入两个数字 2.输入完成后&#xff0c;再次点击加&#xff0c;减&#xff0c;乘&…

C# 制作简易计算器

前言&#xff1a;环境是vs 2022 1、打开vs2022后&#xff0c;右边导航栏选择创建新项目。 2、选择Windows窗体应用&#xff08;.net Framework&#xff09; 3、进入配置新项目界面&#xff08;项目名称和位置可自行修改&#xff09;点击创建 4、窗体From1即为我们要要编辑的位…

至简设计系列_简易计算器

–作者&#xff1a;小黑同学 本文为明德扬原创及录用文章&#xff0c;转载请注明出处&#xff01; 1.1 总体设计 1.1.1 概述 计算器是近代人发明的可以进行数字运算的机器。现代的电子计算器能进行数学运算的手持电子机器&#xff0c;拥有集成电路芯片&#xff0c;但结构比电…

如何制作一个简易的计算器

今天&#xff0c;我们来学习如何完成一个简易计算器的功能吧&#xff01; 一.布局 我们可以在HTML中使用CSS完成计算器的布局。接下来&#xff0c;我们便先来看看我们所要实现的效吧&#xff01; 上图的计算器中&#xff0c;我们可以通过以下几个步骤完成对计算器的简单布局…

简易版计算器

这次我们来写一个简单的计算器案例 代码部分 HTML部分 首先设置一个基本样式&#xff0c;把我们需要的“计算”按钮&#xff0c;“-*/”四个计算符合&#xff0c;三个文本框准备好(两个用来输入数字进行计算&#xff0c;一个用来接收计算出来的结果)&#xff0c;再为三个文…

java拦截器怎么实现

Java拦截器是一种对象拦截器&#xff0c;它可以拦截任何的类、方法和字段。拦截器还可以用于检查类是否已经加载以及对字段的访问权限是否符合规范。下面就让我们来了解一下 java拦截器怎么实现吧。 在 Java中&#xff0c;可以通过重写方法和代码块来实现拦截功能&#xff0c;但…

Java中的过滤器和拦截器

Java中的过滤器和拦截器 一.应用场景 拦截器应用场景 拦截器本质上是面向切面编程&#xff08;AOP&#xff09;&#xff0c;符合横切关注点的功能都可以放在拦截器中来实现&#xff0c;主要的应用场景包括&#xff1a; 登录验证&#xff0c;判断用户是否登录。权限验证&…

拦截器(HandlerInterceptor)

目录 1 什么是拦截器 2 HandlerInterceptor和WebMvcConfigurer 2.1 HandlerInterceptor 2.2 WebMvcConfigurer 3 拦截器实现流程 1 什么是拦截器 拦截器是相对于Spring中来说的&#xff0c;它和过滤器不一样&#xff0c;过滤器的范围更广一些是相对于Tomcat容器来说的。拦…

用 Java 实现拦截器 Interceptor 的拦截功能

Java 里的拦截器是动态拦截 action 调用的对象&#xff0c;它提供了一种机制可以使开发者可以定义在一个 action 执行的前后执行的代码&#xff0c;也可以在一个 action 执行前阻止其执行&#xff0c;同时也提供了一种可以提取 action 中可重用部分的方式。在 AOP&#xff08;A…

java-拦截器

(1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后&#xff0c;会去判断请求的是静态资源还是动态资源 (3)如果是静态资源&#xff0c;会直接到Tomcat的项目部署目录下去直接访问 (4)如果是动态资源&#xff0c;就需要交给项目的后台代码进行处理…