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 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
jQuery 扩展对input的一些操作方法
Oct 30 Javascript
jquery插件制作简单示例说明
Feb 03 Javascript
js禁止页面使用右键(简单示例代码)
Nov 13 Javascript
jQuery实现炫酷的鼠标轨迹特效
Feb 01 Javascript
jQuery插件简单实现方法
Jul 18 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 Javascript
angular学习之ngRoute路由机制
Apr 12 Javascript
详解angularjs利用ui-route异步加载组件
May 21 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
JS实现遍历不规则多维数组的方法
Mar 21 Javascript
基于JavaScript canvas绘制贝塞尔曲线
Dec 25 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设计模式之单例模式实例分析
2015/02/25 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
vue生命周期的探索
2019/04/03 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
自荐信的两点禁忌
2013/10/30 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
药学职务聘任书
2014/03/29 职场文书
消防宣传口号
2014/06/16 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
运动会宣传稿50字
2015/07/23 职场文书
小学语文国培研修日志
2015/11/13 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python