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文件优化
Dec 08 Javascript
js弹出层之1:JQuery.Boxy (二)
Oct 06 Javascript
JavaScript自执行闭包的小例子
Jun 29 Javascript
node.js中的require使用详解
Dec 15 Javascript
JavaScript实现打开链接页面的方式汇总
Jun 02 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
Sep 05 Javascript
完全深入学习Bootstrap表单
Nov 28 Javascript
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
详解JS构造函数中this和return
Sep 16 Javascript
详解Vue源码学习之双向绑定
Apr 10 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
Apr 16 Javascript
vue实现滑动到底部加载更多效果
Oct 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
python定时任务 sched模块用法实例
2019/11/04 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
python中的unittest框架实例详解
2021/02/05 Python
机电专业毕业生求职信
2013/10/27 职场文书
电子信息专业自荐书
2014/02/04 职场文书
湘江北去观后感
2015/06/15 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python