整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

入门|15分钟用JS做一个简易计算器

这个小练手旨在帮助刚上手学习JavaScript的同学练习最基本的Js知识,大神勿喷哈,由于这个是非常简易的计算器,可以完成的功能有加减乘除和AC(清屏),DEL(退格)等基本运算,所以代码也不复杂,我会先放出代码,然后再讲解我的思路,非常简单,只要你按照我的思路走,15分钟不到我保证你也可以敲出同样的代码,当然主要还是希望可以为入门的同学提供一种解决问题的思路,各位看完后可以自己动手敲一遍哈。

HTML代码部分

HTML这部分非常简单,没什么多说的,整个框架我利用<table>搭建的,需要注意的是,由于计算器屏幕不可输入,我设置为了disabled。

CSS代码部分

CSS也是简单设定了一下宽高,我是在火狐浏览器上运行的,由于我没使用百分比来设置宽高,在其他浏览器上样式会发生一定程度上的改变,不过不影响功能就是了。

JavaScript部分

请先不要直接看这部分代码,先看我的思路讲解再看这部分,你绝对可以轻松理解

思路讲解

请先不要看上面的JS代码,接下来请试着跟着我的思路走,完成这个计算器的功能,我是分成三个部分来解决的,第一部分是将除了AC,DEL这两个键之外的按键值获取到屏幕上,第二部分是计算屏幕上的表达式的值,第三部分是添加AC(清屏),DEL(退格)功能,检查BUG。

  • 第一部分:获取值到屏幕上

我认为解决简单的JS问题大体都可以分三步:

  • 1.获取你想操作的元素;

  • 2.保存你想操作的元素;

  • 3.对元素进行(遍历)操作;

我的第一步目的是将除了AC,DEL这两个键之外的按键值获取到屏幕上,那么我首先得获取按钮元素以及屏幕元素并将它们保存在btn_txt和txt变量里:

获取并保存了想操作的元素,接下来就对他们添加操作:

在进行操作的之前请等一下,我们思考一下,btn_txt数组里存放着0,1,2,3,4,5,6,7,8,9," . "," + "," - "," * "," \ "," = "等一系列东西,我们当然要对数字和计算符号进行分开操作,所以我们用If……else……来判断一下

OK,我们接下来先考虑用户输入的是数字或者点的情况,首先数字可以连续输入到屏幕里,但是小数点不应该能连续输入到屏幕里,小数点应该只有一个才对,所以我们应该先加一个判断条件:屏幕里是否有小数点存在?如果屏幕里已经有小数点存在,那么我只允许你再输入数字,否则屏幕值不会接收,即是如下代码:

好了,用户输入的是数字或者点的情况已经考虑结束了,现在考虑用户输入的是运算符号的情况!这种情况也分两部分,一种是用户按了等号,一种是按了除等号之外的其他加减乘除运算符号,因为等号比较特殊一点,按了就直接应该得出结果了,所以要区用if……else……分开。我这样的思路你可以理解吧!

还有一个事情我们要考虑的是,我希望在我按下加减乘除运算符号时可以清屏,这样我就可以继续键入下一数字了(举例:我按下数字“5”,再按下运算符“ + ”,按下瞬间屏幕清屏,然后我再键入数字“3”,最后按下“ = ”,最后得出结果“2”),但是清屏我并不想让我的数据丢失,所以此时我先新建一个数组来保存这些数据(这里的“数据”指数字和运算符,也叫“表达式”),然后再清屏!具体代码如下:

  • 第二部分:计算屏幕上的表达式的值

好了下面我们讨论用户按下等号键的情况,这种比较简单,直接对表达式(表达式就是我们之前输入的数字与符号组合)进行计算就可以啦,需要注意的是计算完成之后要把保存表达式的数组way_res清空,因为本次运算完满结束了,如果不清空里面的数据会影响下一次正常计算;

  • 第三部分:添加AC,DEL功能,检查BUG

首先,获取清空按钮和退格按钮,然后把它们保存在btn_way变量下;

然后就遍历进行添加功能,这里同样需要一个if……else……语句来判断用户按的是AC按钮还是DEL按钮

到这里为止,所有功能基本上全部添加完毕,然后我们进行调试,发现一个问题,就是当我们第一次按键就按小数点“ . ”时,这时用户的本意应为“ 0. ”,意即用户是想输入小数的,但是懒得按“0”,直接按了小数点,所以我们应该加一个判断条件来帮助用户,直接按小数点成为有意义的行为,代码如下:

好了,最后再加上window.onload = function(){},代码,到这里就全部结束了;大家有不理解的地方欢迎在评论里问我;

再放一遍JavaScript全代码

  • 于想做一个计算器了,少少几行js代码而已。
  • 网上有很多的html计算器的实例,大多是用table来做的,但我还是选择用div来做。
  • 这个计算器有基本的运算功能,但一些细的纠错,就没再细究了,极简嘛。
  • 更多文章,请关注我的头条号,我是落笔承冰。

一、开始吧,先做一个360*500的盒子。

二、加入输入框,输入框给它270宽,再配个灰色背景。

三、做18个div,我觉得这样子比table标签更直观,其实你还是什么都看不见,因为字是黑色的,背景黑色的。

四、行了,我们给div加样式吧。

  • 盒子天生独占一行,我们做一下修改让它摆得整齐些。

五、我们让这18个按钮浮动,它们就不会独占一行了,然后再让它们外部上下左右距离为5px。

  • 整体的样子是有了。

六、把按键做成圆的,里面的字居中,然后再把字变大。

  • 注释占了太多行,后面我就不写这么多了,特别是重复的。

七、把计算器的整体外观也改改。

  • 内部距离20px,再加20px的圆角。

八、“=”和“0” 这两个一个是加高,一个是加宽,我们得再加样式区别对待。

  • 按钮变长了,但是却空了一行。

九、我们让等号按钮右浮动就可以了。

十、对按钮再修饰,做两个样式,一个是灰白色,一个是土黄色。

十一、对输入框做个修饰,最终完成界面设计。

十二、我们整个js只用获取一个元素对象,那就是input。

十三、做按钮点击事件,把大多数按钮的点击都写进去,这里我特意用箭头函数,当学习吧。

几乎所有的按钮都调用这个clickbt函数,唯有“=”号不用。

十四、该是为“=”加函数的时候了,这里用了eval(),能把字符串当算式运算出结果。

十五、总结,到此为止,整个计算器就做出来了,大家会发现js部分很简单,因为我们只有一般的加减乘除计算,有更多想法的朋友,自己补充吧。

简单的用JavaScript实现计算器的方法可以使用eval()函数,该函数可以计算字符串中的数学表达式。以下是一个简单的示例:

html复制代码运行

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>简单计算器</title> </head> <body> <input type="text" id="expression" placeholder="请输入表达式"> <button onclick="calculate()">计算</button> <p>结果:<span id="result"></span></p> <script> function calculate() { var expression = document.getElementById("expression").value; try { var result = eval(expression); document.getElementById("result").innerText = result; } catch (error) { alert("输入的表达式有误,请检查后重新输入"); } } </script> </body> </html>

这个示例中,我们创建了一个简单的HTML页面,包含一个输入框用于输入表达式,一个按钮用于触发计算,以及一个用于显示结果的段落。在JavaScript部分,我们定义了一个名为calculate的函数,该函数首先获取输入框中的表达式,然后使用eval()函数计算表达式的结果,并将结果显示在页面上。如果输入的表达式有误,我们会弹出一个警告框提示用户检查输入。