Javascript实现基本运算器


Posted in Javascript onJuly 15, 2017

用Javascript实现一个基本的运算器,具体内容如下

使用表格布局,JS添加事件

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>计算器</title>
</head>
<style>
 *{
  margin: 0;
  padding: 0;
 }
 table{
  width:400px;
  height: 600px;
  border-collapse: collapse;
  margin: auto;
 }
 .trr{
  width: 400px;
  height: 100px;
 }
 .trr1{
  width: 400px;
  height: 50px;
 }
 .tdd{ width: 100px;
  height: 100px;
  border: 1px solid silver;
  text-align: center;
  line-height: 100px;

 }
 .btn{
  width: 100%;
  height: 100%;
  font-size: 2.5em;
 }
 .btn1{
  width: 100%;
  height: 100%;
  font-size: 2.5em;
 }
 .tdd1{
  width: 100px;
  height: 50px;
 }
 .text{
  height: 100%;
  font-size: 2.5em;
  text-align: right;
 }

</style>
<body>
<table>

 <tr class="trr text1">
  <td class="tdd" colspan="4"><input class="text" type="text" disabled value="0" /></td>
 </tr>

 <tr class="trr1">
  <td class="tdd1" colspan="2"><input class="btn1 btn" type="button" value="c"/></td>
  <td class="tdd1" colspan="2"><input class="btn1 btn" type="button" value="d"/></td>
 </tr>

 <tr class="trr">
  <td class="tdd"><input class="btn" type="button" value="7"/></td>
  <td class="tdd"><input class="btn" type="button" value="8"/></td>
  <td class="tdd"><input class="btn" type="button" value="9"/></td>
  <td class="tdd"><input class="btn" type="button" value="/"/></td>
 </tr>

 <tr class="trr">
  <td class="tdd"><input class="btn" type="button" value="4"/></td>
  <td class="tdd"><input class="btn" type="button" value="5"/></td>
  <td class="tdd"><input class="btn" type="button" value="6"/></td>
  <td class="tdd"><input class="btn" type="button" value="*"/></td>
 </tr>

 <tr class="trr">
  <td class="tdd"><input class="btn" type="button" value="1"/></td>
  <td class="tdd"><input class="btn" type="button" value="2"/></td>
  <td class="tdd"><input class="btn" type="button" value="3"/></td>
  <td class="tdd"><input class="btn" type="button" value="-"/></td>
 </tr>

 <tr class="trr">
  <td class="tdd"><input class="btn" type="button" value="0"/></td>
  <td class="tdd"><input class="btn" type="button" value="."/></td>
  <td class="tdd"><input class="btn" type="button" value="+"/></td>
  <td class="tdd"><input class="btn" type="button" value="="/></td>
 </tr>
</table>
<script>
 var obtn=document.getElementsByClassName("btn");
 var otext=document.getElementsByClassName("text")[0];
 var arr=[];//定义一个数组,向其中存入数字和运算符。

 for(var i=0;i<obtn.length;i++){
  obtn[i].onclick= function () { 
   if(!isNaN(this.value)||this.value=="."){ //this:代表鼠标点击的obtn
     if(otext.value.indexOf(".")==-1){ //消除重复"."的BUG  
      if(otext.value.length==0){ 
      if(this.value!="0"){       //----------------------
       otext.value+=this.value;     //|
      }            //|
      }            //|
      else if(otext.value.length==1&&otext.value=="0"){//|
      otext.value=this.value;      //|
      }            //|
      else if(otext.value.length==1&&otext.value!="0"){//初始状态时,若计算器屏幕为"0",
      otext.value+=this.value;      //实现输入一个非零数字的时候,计算器
      }            //上的数值替换为输入的非零值
      else if(otext.value.length>1){     //|
       otext.value+=this.value;      //|
      }            //--------------------
     }
     else
     {
      if(this.value!="."){ //消除重复"."的BUG
       if(otext.value.length==0){
        if(obtn[i].value!="0"){
        otext.value+=this.value;
       }
       }
       if(otext.value.length>=1){
        otext.value+=this.value;
       }            
      }
     }
   }
   if(this.value=="/"||this.value=="*"||this.value=="+"||this.value=="-"){


    if(otext.value!="0"&&otext.value!=""&&otext.value!="-"){ 
              //消除输入重复运算符的BUG,
     arr[arr.length]=otext.value;  //当输入一个运算符的时候,otext内的value值
     arr[arr.length]=this.value;   //为""(空),所以判断条件为若otext内的value值不为空
     otext.value="";      //则向数字中传值。
    }          //此时出现无法输入负数值运算的BUG


    else if(otext.value==""&&this.value=="-"){ //消除无法输入负数值运算的BUG
     otext.value=this.value;    //当点击运算符后otext的value值为空,
    }           //此时判断若this的值为"-",就替换进去。
    else if(otext.value=="0"&&this.value=="-"){//此时出现无法执行类似"3--3"的双减法运算BUG,
     otext.value=this.value;    //因为eval()无法识别有双减的字符串值。
    }           //若初始时,otext值为"0",并且this的值为
   }            //"-",则用"-"替换otext中的值。



   if(this.value=="="){
    if(otext.value.length>=1){      //--------------------
     var string="";        //|
      if(arr[arr.length-1]=="-"&&otext.value<0){ //→消除无法执行类似"3--3"的双减法运算的BUG
      arr[arr.length-1]="+";     //→当输入负数值的时候,判断arr数组中的
      otext.value=Math.abs(otext.value);  //→末尾值是否为"-",若为"-"则把其改为"+",
      }           //→并且让otext.value值取绝对值。
     arr[arr.length]=otext.value;     //|
     for(var i=0;i<arr.length;i++){    //|
      string+=arr[i];       //|
     }           //|把存入数组中的数字和运算符遍历存储到一个字符串中,
     otext.value=eval(string);     //|直接使用eval()方法就可以识别一个的字符串,执行
     arr=[];          //|该字符串中的运算
    }            //|
   }             //---------------------
   if(this.value=="c"){
    otext.value="0";
    arr=[];
   }
   if(this.value=="d"){
    otext.value=otext.value.substr(0,otext.value.length-1);//每一次删除otext中的末尾值
    if(otext.value==""){         //当把otext中的值删除完后,给
     otext.value="0";         //otext复值"0".
    }
   }
  }
 }
</script>
</body>
</html>

Javascript实现基本运算器

计算器的”c”功能为清屏;”d”功能为删除一个数;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
document.getElementById方法在Firefox与IE中的区别
May 18 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
Sep 13 Javascript
JavaScript中几种排序算法的简单实现
Jul 29 Javascript
jQuery插件支持同一页面被多次调用
Feb 14 Javascript
JavaScript作用域示例详解
Jul 07 Javascript
js获取时间函数及扩展函数的方法
Oct 30 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
AngularJS 控制器 controller的详解
Oct 17 Javascript
小程序数据通信方法大全(推荐)
Apr 15 Javascript
基于Layui自定义模块的使用方法详解
Sep 14 Javascript
jQuery实现轮播图源码
Oct 23 jQuery
vue项目中使用eslint+prettier规范与检查代码的方法
Jan 16 Javascript
基于AngularJS的拖拽文件上传的实例代码
Jul 15 #Javascript
Javascript实现时间倒计时效果
Jul 15 #Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
Jul 15 #Javascript
JavaScript实现时间表动态效果
Jul 15 #Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 #Javascript
JavaScript实现三级联动效果
Jul 15 #Javascript
BackBone及其实例探究_动力节点Java学院整理
Jul 14 #Javascript
You might like
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
python中pycurl库的用法实例
2014/09/30 Python
Python正则捕获操作示例
2017/08/19 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
JAVA程序员面试题
2012/10/03 面试题
老师的检讨书
2014/02/23 职场文书
安全生产承诺书范文
2014/05/22 职场文书
会计专业求职信
2014/08/10 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
公证处委托书
2015/01/28 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书