返回顶部
首页 > 资讯 > 精选 >使用原生javascript编写一个计算器
  • 343
分享到

使用原生javascript编写一个计算器

2023-06-06 11:06:52 343人浏览 泡泡鱼
摘要

使用原生javascript编写一个计算器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、WEB应用程序、分布

使用原生javascript编写一个计算器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Java是什么

Java是一门面向对象编程语言,可以编写桌面应用程序、WEB应用程序、分布式系统和嵌入式系统应用程序。

计算器包括显示数字区域和按键区域两大部分,先把计算器的这两个区域的html元素编写出来,如下所示:

<div class="calculator_wrap" id="calculator"><!--计算器外包元素--> <div class="show_num"><!--显示数字区域--> <div class="num_save" id="numSave"></div><!--计算公式--> <div class="num_cur" id="numCur">0</div><!--计算结果--> <div class="show_m" id="showM">M</div><!--记忆存储标志--> </div> <div class="btn_wrap" id="btnWrap"><!--按钮区域--> <div class="btn" data-key="MC">MC</div><!--记忆清零--> <div class="btn" data-key="MR">MR</div><!--记忆读取--> <div class="btn" data-key="MS">MS</div><!--存储记忆--> <div class="btn" data-key="MA">M+</div><!--记忆加--> <div class="btn" data-key="ML">M-</div><!--记忆减--> <div class="btn" data-key="BACK">←</div><!--退格--> <div class="btn" data-key="CE">CE</div><!--清除当前--> <div class="btn" data-key="Clear">C</div><!--清除--> <div class="btn" data-key="Negate">±</div><!--正负转换--> <div class="btn" data-key="Square">√ ̄</div><!--平方根--> <div class="btn" data-key="Num" data-value="7">7</div><!--7--> <div class="btn" data-key="Num" data-value="8">8</div><!--8--> <div class="btn" data-key="Num" data-value="9">9</div><!--9--> <div class="btn" data-key="Base" data-value="/">/</div><!--除--> <div class="btn" data-key="Percentage">%</div><!--百分号--> <div class="btn" data-key="Num" data-value="4">4</div><!--4--> <div class="btn" data-key="Num" data-value="5">5</div><!--5--> <div class="btn" data-key="Num" data-value="6">6</div><!--6--> <div class="btn" data-key="Base" data-value="*">*</div><!--乘--> <div class="btn" data-key="Reciprocal">1/x</div> <!--倒数--> <div class="btn" data-key="Num" data-value="1">1</div><!--1--> <div class="btn" data-key="Num" data-value="2">2</div><!--2--> <div class="btn" data-key="Num" data-value="3">3</div><!--3--> <div class="btn" data-key="Base" data-value="-">-</div><!--减--> <div class="btn equal" data-key="Equal">=</div><!--等于--> <div class="btn zero" data-key="Num" data-value="0">0</div><!--0--> <div class="btn" data-key="Point">.</div><!--小数点--> <div class="btn" data-key="Base" data-value="+">+</div><!--加--> </div></div>

读者可以自己编写一些样式,设计一个自己喜欢的计算器效果。本实例的计算器效果如下图所示:

使用原生javascript编写一个计算器

样式代码:

.calculator_wrap{width:240px;height:360px;padding:10px;margin:30px auto;border:1px solid #8acceb;background:#d1f1ff;} .calculator_wrap .show_num{position:relative;padding:0 8px;height:60px;background:#fff;text-align:right;} .calculator_wrap .show_m{position: absolute;left:10px;bottom:3px;display:none;} .calculator_wrap .num_save{height:26px;line-height:26px;font-size:12px;white-space:nowrap;} .calculator_wrap .num_cur{font-size:28px;height:34px;line-height:34px;} .calculator_wrap .btn_wrap{font-size:0px;} .calculator_wrap .btn{display:inline-block;width:38px;height:38px;line-height:38px;text-align:center;border:1px solid #ccc;background:#666;color:#fff;font-size:14px;margin:10px 10px 0 0;cursor:pointer;} .calculator_wrap .btn:hover{background:#333;} .calculator_wrap .btn:nth-child(5n){margin-right:0px;} .calculator_wrap .equal{position:absolute;height:90px;line-height:90px;} .calculator_wrap .zero{width:90px;}

对于新手来说,计算器功能看起来好像很复杂,那么多按钮、多种计算方式,不知如何开始。其实任何一个功能,只需要理清楚思路,一步一步编写代码,会发现实现起来都不难。

1 获取各个html元素

web前端不论要在页面上做什么,都要先获取页面上的各个DOM元素。看起来整个计算器的按钮较多,实际开发中可以使用事件代理来操作按钮,所以只获取所有按钮的容器元素即可。代码如下:

//获取外包元素var eCalculator = document.getElementById('calculator');//保存运算数据(公式)容器var eNumSave = document.getElementById('numSave');//当前数字容器var eNumCur = document.getElementById('numCur');//按钮外部容器,用于事件代理var eBtnWrap = document.getElementById('btnWrap');//记忆存储标志元素var eShowM = document.getElementById('showM');

2 声明相关变量

在运算过程中,需要一些变量来进行辅助计算、存储结果和判断等,如下所示:

//运算公式var sStep = '';//当前数字var sCurValue = '0';//运算结果var nResult = null;//运算符var sMark = '';//MR记忆存储数据var nMvalue = 0;//输入状态。false:输入数字替换原数字;true:输入数字加到原数字后面;var bLogStatus = false;

3 按键上添加点击事件

因为整个计算器按键较多,每一个按钮都单独绑定一个事件会显得太多,很繁琐,还会影响性能,且容易出错。所以刚才只获取了按键的外部容器 eCalculator。

再使用事件代理,就只需要在容器上添加点击事件,判断当前点击的按键是哪一个,再执行对应的计算即可。用鼠标点击按键的时候,可能会因为点得太快而选择了按键上的文字,因此还需要在外包容器上添加一个阻止默认行为的操作,代码如下所示:

//外包容器添加鼠标按下事件,用于防止选中文字eCalculator.addEventListener('mousedown',function(event){ //阻止鼠标按下时的默认行为,防止点击按钮过快时选中文字 event.preventDefault();});//按键容器添加点击事件,用于代理所有按键的操作eBtnWrap.addEventListener('click',function(event){});

3.1 获取点击的按键和值

通过事件函数传入的event参数,可以获取到鼠标点击的元素。再通过元素上的data-key和data-value属性判断鼠标点击的是哪一个按键以及它的值,如下所示:

eBtnWrap.addEventListener('click',function(event){ //获取点击的元素 var eTarget = event.target; //判断按下的键 var key = eTarget.dataset.key; //获取按下的值 var value = eTarget.dataset.value;});

3.2 判断按键及值,数字键和小数点执行输入操作

如果按键属性data-key是'Num'表示按下的是数字,'Point'表示小数点。

这些按键都是执行输入,因为数字有多个,所以把数字输入封装到fnInputNum函数中。再封装fnShowResult函数把数据显示到显示数字区域。如下所示:

eBtnWrap.addEventListener('click',function(event){  //判断点击的是否是按键 if(key){ //用switch语句判断不同的按键执行对应的操作 switch(key){  //数字键执行操作  case 'Num':  fnInputNum(value);  break;  //小数点操作  case 'Point':  //判断是否有已小数点,用于限制只能输入一个小数点  if(sCurValue.indexOf('.')==-1){   sCurValue = sCurValue + '.';   bLogStatus = true;  }  break; } //显示数据到显示数字区域 fnShowResult(); }});//输入数字function fnInputNum(num){ //根据输入状态判断是替换当前数字还是添加到当前数字后面 if(bLogStatus){ sCurValue = sCurValue + num; }else{ //限制第一个数字不能是0 if(num!=0){  bLogStatus = true; } sCurValue = num; }}//显示计算结果function fnShowResult(){ //显示计算公式 eNumSave.innerHTML = sStep; //限制数字总长度 if(sCurValue.length>14){ sCurValue = sCurValue.slice(0,14); } //显示当前数字 eNumCur.innerHTML = sCurValue;}

这时候已经可以点击数字和小数点,输入到计算器显示屏上,如图所示:

使用原生javascript编写一个计算器

3.3 加减乘除运算

计算器最基本的就是加减乘除运算。为了实现对数字进行加减乘除并计算结果功能,封装fnCountResult、fnBaseCount和fnEqual三个函数。

fnCountResult用于根据运算符计算结果;

fnBaseCount修改计算公式或计算结果;

fnEqual用于按下=号时计算结果,并重置数据。如下所示:

eBtnWrap.addEventListener('click',function(event){  //判断点击的是否是按键 if(key){ //用switch语句判断不同的按键执行对应的操作 switch(key){    //加减乘除基本运算  case 'Base':  fnBaseCount(value);  break;  //等于  case 'Equal':  fnEqual();  break; } //显示数据到显示数字区域 fnShowResult(); }});//计算结果function fnCountResult(){ //判断当前运算符并执行运算 switch(sMark){ case '+':  nResult = nResult===null?+sCurValue:nResult + (+sCurValue);  break; case '-':  nResult = nResult===null?+sCurValue:nResult - sCurValue;  break; case '*':  nResult = nResult===null?+sCurValue:nResult * sCurValue;  break; case '/':  nResult = nResult===null?+sCurValue:nResult / sCurValue;  break; default:  nResult = +sCurValue; }}//加减乘除基础运算function fnBaseCount(key){ //如果是输入状态,进行运算 if(bLogStatus){  //修改输入状态 bLogStatus = false; //计算公式 sStep = sStep + ' ' + sCurValue + ' ' + key; //计算结果 fnCountResult(); sCurValue = ''+nResult; }else{ //如果公式为空,先加上原始数字 if(sStep==''){   sStep = sCurValue + ' ' + key; }else{ //如果已有公式,更改最后的运算符  sStep = sStep.slice(0,sStep.length-1) + ' ' + key; } } //更改运算符,用于计算 sMark = key;}//等于function fnEqual(){ //如果没有运算符,阻止后续操作 if(sMark=='')return; //计算结果 fnCountResult(); sCurValue = ''+nResult; //重置数据 sStep = ''; sMark = ''; bLogStatus = false;}

现在已经可以在计算器上做加减乘除的计算了,如图所示:

使用原生javascript编写一个计算器

4 再给其他按键添加操作,代码如下所示:

eBtnWrap.addEventListener('click',function(event){  //判断点击的是否是按键 if(key){ //用switch语句判断不同的按键执行对应的操作 switch(key){    //清除  case 'Clear':  fnClear()  break;  //退格  case 'BACK':  fnBack();  break;  //CE  case 'CE':  //清空当前显示数值  sCurValue = '0';  bLogStatus = false;  break;  //取反  case 'Negate':  //当前数值取反  sCurValue = ''+(-sCurValue);  break;  //取平方根  case 'Square':  //当前数值取平方根  nResult = Math.sqrt(+sCurValue);  //其他数据初始化  sCurValue = ''+nResult;  sStep = '';  sMark = '';  bLogStatus = false;  break;  //倒数  case 'Reciprocal':  //当前数值取倒数  //其他数据初始化  nResult = 1/sCurValue;  sCurValue = ''+nResult;  sStep = '';  sMark = '';  bLogStatus = false;  break;  //M系列  case 'MC':  //记忆数值清零  nMvalue = 0;  fnShowM()  break;  case 'MR':  //显示记忆数值  sCurValue = '' + nMvalue;  fnShowM()  break;  case 'MS':  //记忆数值改为当前数值  nMvalue = +sCurValue;  fnShowM()  break;  case 'MA':  //当前数值加到记忆数值中  nMvalue += +sCurValue;  fnShowM()  break;  case 'ML':  //从记忆数值中减去当前数值  nMvalue -= +sCurValue;  fnShowM()  break; } //显示数据到显示数字区域 fnShowResult(); }});//清除function fnClear(){ //初始化所有数据 sStep = ''; sCurValue = '0'; nResult = null; sMark = ''; bLogStatus = false;}//退格function fnBack(){ //必须是输入状态才可以退格 if(bLogStatus){ //减去数值最后一位数 sCurValue = sCurValue.slice(0,sCurValue.length-1); //如果最后数值为空或负号(-),改为0,重置输入状态为false,不可再退格 if(sCurValue==''||sCurValue=='-'){  sCurValue = '0';  bLogStatus = false; } }}//判断是否有M记忆存储function fnShowM(){ bLogStatus = false; //判断是否显示记忆存储标志 eShowM.style.display = nMvalue==0?'none':'block';}

4 绑定键盘事件

写到这里,计算器已经可以正常使用了。不过只能用鼠标点击按键操作效率不高,为了可以更快的使用计算器,还需要加上键盘事件,当按下对应按键时,执行操作,如下所示:

//键盘事件document.addEventListener('keyup',function(event){ //获取当前键盘按键 var key = event.key; //获取按键code var code = event.keyCode; //限制正确的按键才修改显示的数据 var comply = false; //输入数字 if((code>=48&&code<=57)||(code>=96&&code<=105)){ fnInputNum(key); comply = true; } //加减乘除 if( key=='*'||key=='+'||key=='/'||key=='-'){ fnBaseCount(key); comply = true; } //esc键 if(code==27){ fnClear(); comply = true; } //回车键 if(code==13){ fnEqual(); comply = true; } //退格键 if(code==8){ fnBack(); comply = true; } if(comply){ //显示数据到计算器屏幕 fnShowResult(); }});

看完上述内容,你们掌握使用原生javascript编写一个计算器的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 使用原生javascript编写一个计算器

本文链接: https://lsjlt.com/news/246649.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用原生javascript编写一个计算器
    使用原生javascript编写一个计算器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布...
    99+
    2023-06-06
  • 使用原生JavaScript编写一个进度条功能
    这期内容当中小编将会给大家带来有关使用原生JavaScript编写一个进度条功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。进度条实现介绍使用JavaScript实现进度条功能。原理:通过鼠标移动事件,...
    99+
    2023-06-06
  • 使用JavaScript编写一个秒表计时器
    本篇文章给大家分享的是有关使用JavaScript编写一个秒表计时器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript是什么JavaScript是一种直译式的脚...
    99+
    2023-06-07
  • 利用JavaScript写一个简单计算器
    效果如下: 参考程序: <!DOCTYPE html> <html lang="en"> <head> <meta ...
    99+
    2024-04-02
  • Python编写一个简单计算器
    一个计算器最主要的功能是加减乘除,那么用 Python 可以怎样实现呢 #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2018/1/22 22:29 # @Author ...
    99+
    2023-01-31
    计算器 简单 Python
  • 用java编写一个简单的计算器
    文章目录 一、switch 二、switch 和 调用参数 总结 一、switch 代码如下(示例):   import java.util.Scanner;public class Calculator { ...
    99+
    2023-10-03
    java
  • 如何在python中使用PyAutoGui编写一个计算器
    这篇文章将为大家详细讲解有关如何在python中使用PyAutoGui编写一个计算器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python可以做什么Python是一种编程语言,内置了许多...
    99+
    2023-06-07
  • 使用JavaScript编写一个音乐播放器
    这篇文章主要介绍了使用JavaScript编写一个音乐播放器,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被...
    99+
    2023-06-06
  • 使用JavaScript编写一个随机点名器
    这篇文章给大家介绍使用JavaScript编写一个随机点名器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点击,给用户提供更好的体验。2.可以处理表单...
    99+
    2023-06-06
  • 使用JavaScript怎么实现一个计算器
    这期内容当中小编将会给大家带来有关使用JavaScript怎么实现一个计算器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体内容如下<!DOCTYPE html><html&...
    99+
    2023-06-14
  • JavaSwing编写一个简单的计算器软件
    目录实现要求实现代码:实现要求 1、使用Java图形界面组件设计软件,界面如图所示。 2、软件能够满足基本的“加、减、乘、除"等运算要求。 3、程序代码清晰,语法规范,结构合理,逻辑...
    99+
    2024-04-02
  • 用Python写一个计算机
    如果你想用Python写一个计算器,可以按照以下步骤进行: 设计计算器界面:可以使用Python图形库Tkinter等创建计算器的UI界面,包括数字和计算符号等。 定义数字按钮和计算符号按钮:在UI界面上添加数字按钮和计算符号按钮,并绑...
    99+
    2023-09-25
    python
  • javascript如何编写简易计算器
    这篇文章主要介绍javascript如何编写简易计算器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码如下<!DOCTYPE html> <html&n...
    99+
    2024-04-02
  • 使用JavaScript编写一个2048小游戏
    今天就跟大家聊聊有关使用JavaScript编写一个2048小游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点...
    99+
    2023-06-07
  • 使用原生JAVA编写一个简单的停车场系统
    本篇文章为大家展示了使用原生JAVA编写一个简单的停车场系统,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JAVA项目中正号需要一个停车收费系统,就整理出来给大家分享一下,希望对大家有所帮助。<...
    99+
    2023-05-31
    java 停车场系统 ava
  • 使用python编写简单计算器
    ​本文实例为大家分享了python编写简单计算器的具体代码,供大家参考,具体内容如下 做一个计算器,这是我们想要的效果。 1、准备工作 导入time、tqdm、math库 from...
    99+
    2024-04-02
  • 如何用C语言编写一个简单的计算器
    这期内容当中小编将会给大家带来有关如何用C语言编写一个简单的计算器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。描述:简单的实现四则运算1.switch法#include<stdio.h>vo...
    99+
    2023-06-06
  • 原生JavaScript实现网页版计算器
    本文实例为大家分享了JavaScript实现网页版计算器的具体代码,供大家参考,具体内容如下 由于无聊看电脑上的系统软件翻到了计算器这个功能,就简单写一下这个计算器的功能吧,这个网页...
    99+
    2024-04-02
  • Python编写一个程序来计算 BMI 值。
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、BMI是什么?二、使用步骤 1.简单代码2.结果总结 前言 Python编写一个程序来计算 BMI 值: 一、BMI是什么? 小...
    99+
    2023-10-02
    python iot linux 全文检索
  • javascript实现编写网页版计算器
    本篇主要记录的是利用javscript实现一个网页计算器的效果,供大家参考,具体内容如下 话不多说,代码如下: 首先是html的代码: <!DOCTYPE html>...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作