JavaScript||简易版计算器实现

布满荆棘的人生 2023-05-21 15:21 94阅读 0赞

昨天用JavaScript写了一个网页版的简易计算器,现在将制作过程和最终的源代码分享给大家。

首先:进行页面布局

页面布局相对简单,主要应用了table标签、input标签和button标签,下面直接放代码和效果图

  1. //下面是相关的HTML代码
  2. <div id="divTop">
  3. <input id="textBox" type="text" value="0" disabled="disabled" />
  4. <table id="tableTop">
  5. <tr id="top">
  6. <td > <button onclick="wuareone(this)"> AC </button> </td>
  7. <td > <button onclick="wuareone(this)"> Back </button> </td>
  8. <td > <button onclick="wuareone(this)"> % </button> </td>
  9. <td > <button onclick="wuareone(this)"> / </button> </td>
  10. </tr>
  11. <tr >
  12. <td > <button onclick="wuareone(this)"> 7 </button> </td>
  13. <td > <button onclick="wuareone(this)"> 8 </button > </td>
  14. <td > <button onclick="wuareone(this)"> 9 </button > </td>
  15. <td class="gree"> <button onclick="wuareone(this)"> X </button> </td>
  16. </tr>
  17. <tr >
  18. <td > <button onclick="wuareone(this)"> 4 </button></td>
  19. <td > <button onclick="wuareone(this)"> 5 </button> </td>
  20. <td > <button onclick="wuareone(this)"> 6 </button> </td>
  21. <td class="gree"> <button onclick="wuareone(this)"> - </button> </td>
  22. </tr>
  23. <tr >
  24. <td > <button onclick="wuareone(this)"> 1 </button> </td>
  25. <td > <button onclick="wuareone(this)"> 2 </button> </td>
  26. <td > <button onclick="wuareone(this)"> 3 </button> </td>
  27. <td class="gree" > <button onclick="wuareone(this)"> + </button> </td>
  28. </tr>
  29. <tr >
  30. <td > <button onclick="wuareone(this)"> 00 </button> </td>
  31. <td > <button onclick="wuareone(this)"> 0 </button> </td>
  32. <td > <button onclick="wuareone(this)"> . </button> </td>
  33. <td id="sum" > <button onclick="wuareone(this)"> = </button> </td>
  34. </tr>
  35. </table>
  36. </div>

代码相对简单易读,对其中的部分标签添加“id”、”class”属性是为了后面样式设计时,可以对特定”id”、“class”值的标签进行样式修改。
而每个按钮后面的οnclick=”wuareone(this)”事件,是对按钮添加点击事件,每次按钮点击时,会将这个按钮的id作为参数传给wuareone(v)方法,从而实现相关功能。
下面是纯HTML代码下的图片:
在这里插入图片描述

接着:进行样式修改

计算器的最终样式我是在网上找了一个相对舒服的计算机成品图,根据其来进行样式修改的,这步也没啥好说的,主要看审美,下面直接放代码和样式修改后的成品图。

  1. //下面是样式修改的相关css代码
  2. body{
  3. text-align: center;
  4. width: auto;
  5. height: auto;
  6. }
  7. div{
  8. margin: 0 auto;
  9. width: 280px;
  10. height: auto;
  11. background-color: #FFFAAC;
  12. padding: 8px 4px 8px 4px;
  13. border-radius: 8px;
  14. }
  15. img{
  16. height: 16px;
  17. }
  18. button{
  19. width: 64px;
  20. height: 32px;
  21. background-color: #008fb1;
  22. color: white;
  23. border-radius: 4px;
  24. }
  25. #textBox{
  26. width: 256px;
  27. height: 32px;
  28. text-align: right;
  29. background-color: white;
  30. border-radius: 4px;
  31. }
  32. #top button,.gree button{
  33. background-color: #b5d479;
  34. color: #6f5021;
  35. }
  36. #sum button{
  37. background-color: #eab19d;
  38. color: #6f5021;
  39. }

下面是利用css进行样式设计后的效果图:
在这里插入图片描述

最后:进行功能实现

到目前,计算器的最终样式已经设计完成,紧接着就是功能实现。
前面说过,每次按钮事件发送后,即触发按钮点击事件后,均执行wuareone(v)函数,这个函数是自己定义的,目的是为了实现计算器的功能。
下面放这个函数相关的代码:

  1. //定义一个变量记录运算式子
  2. var willSum = "";
  3. //获取文本框id
  4. var idText = document.getElementById("textBox");
  5. function wuareone(v){
  6. if(v.innerText == "AC"){ //清零
  7. willSum = "";
  8. idText.value = "0";
  9. }else if(v.innerText == "Back"){ //回退
  10. if(idText.value.length > 0){
  11. willSum = willSum.substring(0, willSum.length-1);
  12. idText.value = willSum;
  13. }
  14. }else if(cheak(v.innerText) == true){ //小数点和运算符处理
  15. var ch ;
  16. if(v.innerText == "X"){ //乘法处理
  17. ch = "*";
  18. }else{
  19. ch = v.innerText
  20. }
  21. if(ch != willSum.charAt(willSum.length-1) && !cheak(willSum.charAt(willSum.length-1))){
  22. willSum += ch;
  23. idText.value = willSum;
  24. }
  25. }else if(v.innerText == "="){ //求值
  26. window.eval("willSum = " + idText.value);
  27. idText.value = idText.value + "=" + willSum;
  28. willSum = "";
  29. }else{
  30. willSum += v.innerText;
  31. idText.value = willSum;
  32. }
  33. }
  34. var cheak = function(x){
  35. var ch = ["+","-","X","/","%","."];
  36. for(var i = 0; i < ch.length; i++){
  37. if(ch[i] == x){
  38. return true;
  39. }
  40. }
  41. return false;
  42. }

这里有一个check函数,相信大家一看就知道这个代码的功能了,它是为了判断按钮对应的值是不是运算符或者小数点,如果是则返回true,不是就返回false。
那么为什么要把这几个值拎出来呢?因为如果使用者按下这些键时,我们都应该判断前面按下的键是不是也属于他们间的一个,如果是,则应该不允许输入,若不是,则可以输入。
其他的类似”=”、“AC”、“Back”键也单独拿出来,是因为他们比较特殊,不能作为最后一个字符,如果最后一个字符是他们间的一个,都应该单独执行对应功能(求结果、清零、回退)。

至此,我们的简易版计算器大致完成了,下面是一些细节的调整:
1)页面刷新时清零

  1. //页面重新加载时清零
  2. function unload(){
  3. willSum = "";
  4. idText.value = "0";
  5. }

2)页面报错时清零

  1. //页面报错时清零
  2. window.onerror = function(){
  3. willSum = "";
  4. idText.value = "Error";
  5. }

好了,到这,就大功告成了!下面放上动态效果图:

计算器效果图

需要完整源代码的朋友可以点击下面的链接下载噢!有什么问题欢迎大家留言,一起交流学习~
链接://download.csdn.net/download/qq_43543920/12333703

发表评论

表情:
评论列表 (有 0 条评论,94人围观)

还没有评论,来说两句吧...

相关阅读