JavaScript制作简易计算器(不用eval)


Posted in Javascript onFebruary 05, 2017

本文实例为大家分享了js制作简易计算器的具体代码,供大家参考,具体内容如下

<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style type="text/css">
  * {
   padding: 0;
   margin: 0;
  }
  li {
   list-style: none;
  }
  body {
   background: #940032;
  }

  #counter {
   width: 500px;
   height: 420px;
   background: #939;
   margin: 50px auto 0;
   position: relative;
  }

  #counter h2 {
   line-height: 42px;
   padding-left: 15px;
   font-size: 14px;
   font-family: arial;
   color: #ff3333;
  }

  #counter a {
   font-weight: normal;
   text-decoration: none;
   color: #ff3333;
  }

  #counter a:hover {
   text-decoration: underline;
  }

  #bg {
   width: 280px;
   height: 200px;
   border: 3px solid #680023;
   background: #990033;
   filter: alpha(opacity=80);
   opacity: 0.8;
   position: absolute;
   left: 50%;
   top: 115px;
   margin-left: -141px;
  }

  #counter_content {
   width: 250px;
   position: absolute;
   top: 130px;
   left: 130px;
   z-index: 1;
  }

  #counter_content h3 {
   margin-bottom: 10px;
  }

  #counter_content h3 input {
   border: none;
   width: 223px;
   height: 30px;
   line-height: 30px;
   padding: 0 10px;
   background: url(img/ico.png) no-repeat;
   text-align: right;
   color: #333;
   font-size: 14px;
   font-weight: bold;
  }

  #counter_content div {
   width: 250px;
  }

  #counter_content input {
   width: 60px;
   height: 30px;
   line-height: 30px;
   float: left;
   background: url(img/ico.png) no-repeat -303px 0;
   text-align: center;
   color: #fff;
   cursor: pointer;
   margin: 0 1px 4px 0;
   border: 0;
  }

  #counter_content div > input:hover {
   background: url(img/ico.png) no-repeat -243px 0;
  }

  #counter p {
   width: 500px;
   position: absolute;
   bottom: 20px;
   left: 0;
   color: #ff3333;
   text-align: center;
   font-size: 12px;
  }
 </style>
</head>
<body>
<div id="counter">
 <h2>简易计算</h2>
 <div id="counter_content">
  <h3><input id="input1" type="text" value="0"/></h3>
  <div id="div1">
   <input type="button" value="7" onclick="kick('7')"/>
   <input type="button" value="8" onclick="kick('8')"/>
   <input type="button" value="9" onclick="kick('9')"/>
   <input type="button" value="+" onclick="kick('+')"/>
   <input type="button" value="4" onclick="kick('4')"/>
   <input type="button" value="5" onclick="kick('5')"/>
   <input type="button" value="6" onclick="kick('6')"/>
   <input type="button" value="-" onclick="kick('-')"/>
   <input type="button" value="1" onclick="kick('1')"/>
   <input type="button" value="2" onclick="kick('2')"/>
   <input type="button" value="3" onclick="kick('3')"/>
   <input type="button" value="*" onclick="kick('*')"/>
   <input type="button" value="0" onclick="kick('0')"/>
   <input type="button" value="C" onclick="kick('C')"/>
   <input type="button" value="=" onclick="kick('=')"/>
   <input type="button" value="/" onclick="kick('/')"/>
  </div>
 </div>
</div>
</body>
<script>
 var showInput = document.getElementById("input1");
 var isClear = false;
 var tempStr = "";
 var clacType = "";
 var isContinue = true;
 function kick(clickValue) {
  switch (clickValue) {
   case "=":
    if (tempStr != "" && clacType != "") {
     showInput.value = clac(tempStr, showInput.value, clacType);
     isContinue = false;
     clacType = "";
    }
    break;
   case "+":
   case "-":
   case "*":
   case "/":
    //如果预存的操作符不为空 表示表示连续操作
    if (clacType != "" && !isContinue) { //先执行计算
     tempStr = clac(tempStr, showInput.value, clacType);
     isClear = true;
     clacType = clickValue;
    } else {
     tempStr = showInput.value; //点击操作符之后 预存字符
     isClear = true;//表示点击了操作符
     clacType = clickValue;//预存操作符
    }
    isContinue = true;
    break;
   case "C":
    showInput.value = "0";
    isClear = false;
    tempStr = "";
    clacType = "";
    break;
   default://普通的数字按钮点击
    showInput.value = showInput.value == "0" ? "" : showInput.value;
    isContinue = false;
    if (isClear) {
     showInput.value = "";
     showInput.value += clickValue;
     isClear = false;
    } else {
     showInput.value += clickValue;
    }
    break;
  }
 }


 function clac(num1, num2, type) {
  switch (type) {
   case "+":
    return Number(num1) + Number(num2);
   case "-":
    return Number(num1) - Number(num2);
   case "*":
    return Number(num1) * Number(num2);
   case "/":
    return Number(num1) / Number(num2);
   default:
    break;
  }
  }
 </script>

关于计算器的精彩文章请查看《计算器专题》 ,更多精彩等你来发现!

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

Javascript 相关文章推荐
jQuery textarea的长度进行验证
May 06 Javascript
Document对象内容集合(比较全)
Sep 06 Javascript
简单的代码实现jquery定时器
Jan 03 Javascript
关于JavaScript对象的动态选择及遍历对象
Mar 10 Javascript
Bootstrap每天必学之进度条
Nov 30 Javascript
node.js中的事件处理机制详解
Nov 26 Javascript
微信小程序 WebSocket详解及应用
Jan 21 Javascript
JS实现多张图片预览同步上传功能
Jun 23 Javascript
深入浅析Vue中的 computed 和 watch
Jun 06 Javascript
JS简易计算器实例讲解
Jun 30 Javascript
Vue自定义组件双向绑定实现原理及方法详解
Sep 03 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
Jan 27 Javascript
flexslider.js实现移动端轮播
Feb 05 #Javascript
简单实现js悬浮导航效果
Feb 05 #Javascript
用js制作淘宝放大镜效果
Oct 28 #Javascript
js实现百度搜索提示框
Feb 05 #Javascript
jQuery.Form上传文件操作
Feb 05 #Javascript
jQuery实现最简单实用的分秒倒计时
Feb 05 #Javascript
用jquery的attr方法实现图片切换效果
Feb 05 #Javascript
You might like
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
Python中IPYTHON入门实例
2015/05/11 Python
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
安装docker-compose的两种最简方法
2019/07/30 Python
python中bytes和str类型的区别
2019/10/21 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
python中如何进行连乘计算
2020/05/28 Python
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
Tory Burch德国官网:美国时尚生活品牌
2018/01/03 全球购物
美国牛仔品牌:True Religion
2018/11/16 全球购物
EJB实例的生命周期
2016/10/28 面试题
建筑公司文秘岗位职责
2013/11/29 职场文书
实习评语大全
2014/04/26 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers