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 相关文章推荐
JavaScript网页制作特殊效果用随机数
May 22 Javascript
jquery select(列表)的操作(取值/赋值)
Aug 06 Javascript
jQuery Tools tab使用介绍
Jul 14 Javascript
详解JavaScript函数绑定
Aug 18 Javascript
js函数返回多个返回值的示例代码
Nov 05 Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 Javascript
jQuery实现简单隔行变色的方法
Feb 20 Javascript
关于微信中a链接无法跳转问题
Aug 02 Javascript
JS调用打印机功能简单示例
Nov 28 Javascript
jQuery表单验证之密码确认
May 22 jQuery
详解@angular/cli 改变默认启动端口两种方式
Nov 29 Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
强制设为首页代码
2006/06/19 Javascript
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python获取指定字符前面的所有字符方法
2018/05/02 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
Django REST framework视图的用法
2019/01/16 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
django API 中接口的互相调用实例
2020/04/01 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
eBay加拿大站:eBay.ca
2019/06/20 全球购物
春节活动策划方案
2014/01/24 职场文书
妇产医师自荐信
2014/01/29 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
开网店计划分析
2019/07/30 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python