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的read函数与js的onload不同方式实现
Mar 18 Javascript
浅析jquery某一元素重复绑定的问题
Jan 03 Javascript
javascript中$(function() {});写与不写有哪些区别
Aug 10 Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 Javascript
纯javascript响应式树形菜单效果
Nov 10 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
JavaScript面向对象程序设计教程
Mar 29 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
Nov 29 Javascript
利用Node.js检测端口是否被占用的方法
Dec 07 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
Sep 24 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全局使用Laravel辅助函数dd
2019/12/26 PHP
JS 去除Array中的null值示例代码
2013/11/20 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
理解 JavaScript EventEmitter
2018/03/29 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
详细介绍Python中的偏函数
2015/04/27 Python
Python中设置变量访问权限的方法
2015/04/27 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
使用python实现对元素的长截图功能
2019/11/14 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
python openssl模块安装及用法
2020/12/06 Python
python+opencv实现车道线检测
2021/02/19 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
康拓普公司Java笔面试
2016/09/23 面试题
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
服务质量承诺书
2014/03/27 职场文书
卖房协议书
2014/04/11 职场文书
企业诚信承诺书
2014/05/23 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
详细介绍python类及类的用法
2021/05/31 Python
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫