js实现简单计算器


Posted in Javascript onNovember 22, 2015

参考部分资料,编写一个简单的计算器案例,虽然完成了正常需求,但是也有不满之处,待后续实力提升后再来补充,先把不足之处列出:

1:本来打算只要打开页面,计算器的输入框会显示一个默认为0的状态,但是在输入框加入默认显示为0的时候,选择数据输入时,该0会显示输入数字的前面,例如”0123“,由于能力有限,待后续实力提升再来补充完善!

2:目前只能实现鼠标控制选择按钮,待完善键盘录入功能。

3:乘法的那个符号在本来想改成”ד这个符号的,待后续完善。

附图片一张:

js实现简单计算器

html部分:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>计算器</title>
</head>
<body onload="onLoad()">
<div id="calculator">
  <div class="LOGO">
    <span class="name">简单的计算器</span>
    <span class="verson">@liumobai v1.0</span>
  </div>
  <div id="shuRu">
    <!--screen输入栏-->
    <div class="screen">
      <input type="text" id="screenName" name="screenName" class="screen" value="" onfocus="jsq(this)">
    </div>
  </div>
  <div id="keys">
    <!-- operators and other keys -->
    <!--第一排-->
    <input type="button" id="7" onclick="jsq(this.id)" value="7" class="buttons">
    <input type="button" id="8" onclick="jsq(this.id)" value="8" class="buttons">
    <input type="button" id="9" onclick="jsq(this.id)" value="9" class="buttons">
    <input type="button" id="Back" onclick="tuiGe()" value="Back" class="buttons">
    <input type="button" id="C" onclick="clearNum()" value="C" class="buttons" style="margin-right:0px">
    <!--第二排-->
    <input type="button" id="4" onclick="jsq(this.id)" value="4" class="buttons">
    <input type="button" id="5" onclick="jsq(this.id)" value="5" class="buttons">
    <input type="button" id="6" onclick="jsq(this.id)" value="6" class="buttons">
    <input type="button" id="*" onclick="jsq(this.id)" value="*" class="buttons">
    <input type="button" id="/" onclick="jsq(this.id)" value="/" class="buttons" style="margin-right:0px">
    <!--第三排-->
    <input type="button" id="1" onclick="jsq(this.id)" value="1" class="buttons">
    <input type="button" id="2" onclick="jsq(this.id)" value="2" class="buttons">
    <input type="button" id="3" onclick="jsq(this.id)" value="3" class="buttons">
    <input type="button" id="+" onclick="jsq(this.id)" value="+" class="buttons">
    <input type="button" id="-" onclick="jsq(this.id)" value="-" class="buttons" style="margin-right:0px">
    <!--第四排-->
    <input type="button" id="0" onclick="jsq(this.id)" value="0" class="buttons">
    <input type="button" id="00" onclick="jsq(this.id)" value="00" class="buttons">
    <input type="button" id="." onclick="jsq(this.id)" value="." class="buttons">
    <input type="button" id="%" onclick="jsq(this.id)" value="%" class="buttons">
    <input type="button" id="eva" onclick="eva()" value="=" class="buttons" style="margin-right:0px">
  </div>
  <div class="footer">
    <span class="aside">欢迎使用JavaScript计算器</span>
      <span class="link">
        <a href="#" title="声明" target="_blank">反馈</a>
      </span>
  </div>
</div>
</body>
</html>

JS部分:

<script>
  var num = 0; // 定义第一个输入的数据
  function jsq(num) {
    //获取当前输入
    document.getElementById('screenName').value += document.getElementById(num).value;
  }
  function eva() {
    //计算输入结果
    document.getElementById("screenName").value = eval(document.getElementById("screenName").value);
  }
  function clearNum() {
    //清0
    document.getElementById("screenName").value = null;
    document.getElementById("screenName").focus();
  }
  function tuiGe() {
    //退格
    var arr = document.getElementById("screenName");
    arr.value = arr.value.substring(0, arr.value.length - 1);
  }
  function onLoad(){
    //加载完毕后光标自动对应到输入框
    document.getElementById("screenName").focus();
  }
</script>

CSS部分: 

/*Basic reset*/
*{
  margin:0;
  padding:0;
  box-sizing: border-box;
  font: 14px Arial,sans-serif;
}
html{
  height:100%;
  background-color:lightslategrey;
}

#calculator{
  margin: 15px auto;
  width:330px;
  height:400px;
  border: 1px solid lightgray;
  background-color:darkgrey;
  padding:15px;
}

/*LOGO*/
.LOGO{
  height:20px;

}
.LOGO .name{
  float:left;
  line-height:30px;
}
.LOGO .verson{
  float:right;
  line-height:30px;
}
/*screen*/
#shuRu{
  margin-top:15px;
}
.screen{
  margin-top:5px;
  width:300px;
  height:40px;
  text-align: right;
  padding-right:10px;
  font-size:20px;
}
#keys{
  border:1px solid lightgray;
  height:223px;
  margin-top:25px;
  padding:8px;
}
#keys .last{
  margin-right:0px;
}
.footer{
  margin-top:20px;
  height:20px;
}
.footer .link{
  float:right;
}

#keys .buttons{
  float:left;
  width: 42px;
  height: 36px;
  text-align:center;
  background-color:lightgray;
  margin: 0 17px 20px 0;
}

接下来再给大家分享一则实例

<html>
<head>
    <title>Untitled</title>
    <style type="text/css">
       input[type=button]
       {
           width:25px;
           height:25px;
       }
    </style>
    <script type="text/javascript">
       var result=0;
      var point=false;       //判断是小数点前还是后
      var multiple=0.1;         //初始化小数点后的倍率
      var sort=0;              //标记加减乘除
      var temp=0;                //记录上一轮结果
      function onbutton0()    //数字按钮动作
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+0;       //小数点前的处理
           else                                    //小数点后的处理
           {
              result=result+multiple*0;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton1()
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+1;
           else
           {
              result=result+multiple*1;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton2()
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+2;
           else
           {
              result=result+multiple*2;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton3()
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+3;
           else
           {
              result=result+multiple*3;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton4()
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+4;
           else
           {
              result=result+multiple*4;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton5()
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+5;
           else
           {
              result=result+multiple*5;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton6()
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+6;
           else
           {
              result=result+multiple*6;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton7()
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+7;
           else
           {
              result=result+multiple*7;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton8()
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+8;
           else
           {
              result=result+multiple*8;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton9()
       {
         var name=document.getElementByIdx_x("show");
           if(!point) result=10*result+9;
           else
           {
              result=result+multiple*9;
              multiple=multiple*0.1;
           }
           name.value=String(result);
       }
       function onbutton_point()           //小数点按钮
       {
          var name=document.getElementByIdx_x("show");
           point=true;
           name.value=String(result)+".";
       }
       function onbutton_back()        //退格按钮
       {
           var name=document.getElementByIdx_x("show");
           var temp=name.value;
           name.value="";
           for(var i=0;i<temp.length-1;i++)
              name.value+=temp[i];
       }
       function onbutton_plus()
       {
           var name=document.getElementByIdx_x("show");
           point=false;
           multiple=0.1;
           switch (sort)                       //遇到下一个操作符时判断上一个操作符是什么,并进行上一个操作符的计算
           {                                  //eg:1+2+3=  遇到第二个+时判断前一个符号,发现是+则进行+运算,得到3赋给result
              case 1:result=result+temp;
                   break;
              case 2:result=temp-result;
                   break;
              case 3:result=temp*result;
                   break;
              case 4:result=temp/result;
                   break;
           }
           sort=1;
           temp=result;
           result=0;
           name.value="0";
       }
       function onbutton_minus()
       {
           var name=document.getElementByIdx_x("show");
           point=false;
           multiple=0.1;
           switch (sort)
           {
              case 1:result=result+temp;
                   break;
              case 2:result=temp-result;
                   break;
              case 3:result=temp*result;
                   break;
              case 4:result=temp/result;
                   break;
           }
           sort=2;
           temp=result;
           result=0;
           name.value="0";
       }
       function onbutton_mult()
       {
           var name=document.getElementByIdx_x("show");
           point=false;
           multiple=0.1;
           switch (sort)
           {
              case 1:result=result+temp;
                   break;
              case 2:result=temp-result;
                   break;
              case 3:result=temp*result;
                   break;
              case 4:result=temp/result;
                   break;
           }
           sort=3;
           temp=result;
           result=0;
           name.value="0";
       }
       function onbutton_div()
       {
           var name=document.getElementByIdx_x("show");
           point=false;
           multiple=0.1;
           switch (sort)
           {
              case 1:result=result+temp;
                   break;
              case 2:result=temp-result;
                   break;
              case 3:result=temp*result;
                   break;
              case 4:result=temp/result;
                   break;
           }
           sort=4;
           temp=result;
           result=0;
           name.value="0";
       }
       function onbutton_equal()
       {
           var name=document.getElementByIdx_x("show");
           point=false;                //重置
           multiple=0.1;               //重置
           switch (sort)
           {
              case 1:result=result+temp;
                   break;
              case 2:result=temp-result;
                   break;
              case 3:result=temp*result;
                   break;
              case 4:result=temp/result;
                   break;
           }
           sort=0;                       //重置
           temp=result;
           result=0;
           name.value=String(temp);
       }
       function onbutton_clear()   //重置为初始状态
       {
           result=0;
         point=false;      
         multiple=0.1;        //初始化小数点后的倍率
         sort=0;             //标记加减乘除
         temp=0;               //记录上一轮结果
         var name=document.getElementByIdx_x("show");
         name.value="0";
       }
    </script>
</head>
 
<body>
    <table align="center">
      <tr>
        <td colspan="5"><input type="text" value="0" id="show"></td>
      </tr>
      <tr>
         <td><input type="button" value="7" onclick="onbutton7();"></td>
         <td><input type="button" value="8" onclick="onbutton8();"></td>
         <td><input type="button" value="9" onclick="onbutton9();"></td>
         <td><input type="button" value="/" onclick="onbutton_div();"></td>
         <td><input type="button" value="<" onclick="onbutton_back();"></td>
      </tr>
      <tr>
        <td><input type="button" value="4" onclick="onbutton4();"></td>
         <td><input type="button" value="5" onclick="onbutton5();"></td>
         <td><input type="button" value="6" onclick="onbutton6();"></td>
         <td><input type="button" value="*" onclick="onbutton_mult();"></td>
         <td><input type="button" value="C" onclick="onbutton_clear();"></td>
      </tr>
      <tr>
        <td><input type="button" value="1" onclick="onbutton1();"></td>
         <td><input type="button" value="2" onclick="onbutton2();"></td>
         <td><input type="button" value="3" onclick="onbutton3();"></td>
         <td><input type="button" value="-" onclick="onbutton_minus();"></td>
         <td rowspan="2"><input type="button" value="=" style="width:25px;height:57px;" onclick="onbutton_equal();"></td>
      </tr>
      <tr>
        <td colspan="2"><input type="button" value="0" style="width:57px;height:25px;" onclick="onbutton0();"></td>
         <td><input type="button" value="." onclick="onbutton_point();"></td>
         <td><input type="button" value="+" onclick="onbutton_plus();"></td>
      </tr>
   </table>
</body>
</html>
Javascript 相关文章推荐
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
Jun 21 Javascript
清空上传控件input file的值
Jul 03 Javascript
IE6不能修改NAME问题的解决方法
Sep 03 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
简介JavaScript中search()方法的使用
Jun 06 Javascript
详解JavaScript的表达式与运算符
Nov 30 Javascript
基于jQuery的checkbox全选问题分析
Nov 18 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
JS扩展String.prototype.format字符串拼接的功能
Mar 09 Javascript
基于js中的存储键值对以及注意事项介绍
Mar 30 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
Sep 05 Javascript
vue 解决computed修改data数据的问题
Nov 06 Javascript
javascript实现别踩白块儿小游戏程序
Nov 22 #Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
Nov 21 #Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 #Javascript
分享经典的JavaScript开发技巧
Nov 21 #Javascript
jQuery实现分隔条左右拖动功能
Nov 21 #Javascript
超详细的javascript数组方法汇总
Nov 21 #Javascript
javascript实现动态统计图开发实例
Nov 21 #Javascript
You might like
一个用于网络的工具函数库
2006/10/09 PHP
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
React diff算法的实现示例
2018/04/20 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
Sublime开发python程序的示例代码
2018/01/24 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
python实现udp传输图片功能
2020/03/20 Python
python 通过文件夹导入包的操作
2020/06/01 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
介绍一下gcc特性
2012/01/20 面试题
小小的船教学反思
2014/02/21 职场文书
出纳担保书范文
2014/04/02 职场文书
图书馆标语
2014/06/19 职场文书
2014年手术室工作总结
2014/11/26 职场文书
2016年情人节问候语
2015/11/11 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS