原生JavaScript制作计算器


Posted in Javascript onOctober 16, 2016

原生JavaScript制作计算器

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 </head>
 <body>
 <!--第一个数X-->
 X:<input type="text" id="inp1" value="" /><br />
 <!--符号-->
 F:<input type="text" id="inp2" value="" /><br />
 <!--第二个数Y-->
 Y:<input type="text" id="inp3" value="" /><br />
 <!--结果R-->
 R:<input type="text" id="inp4" value="" /><br />
 <!--点击按钮-->
 <input type="submit" name="btn" id="btn" value="请计算" />
 </body>
 <script type="text/javascript">
 var inpX1 = document.getElementById("inp1");
 var inpF1 = document.getElementById("inp2");
 var inpY1 = document.getElementById("inp3");
 var inpR = document.getElementById("inp4");
 var result = document.getElementById("btn");
 var inpX ;
 var inpY ;
 var inpF ;
 var sum;
// 点击事件
 result.onclick = function(){
  inpX = Number(inpX1.value);
  inpF = inpF1.value;
  inpY = Number(inpY1.value);
  switch (inpF){
  case "+":{
   sum = inpX + inpY;
   break;
  }
  case "-":{
   sum = inpX - inpY;
   break;
  }
  case "*":{
   sum =inpX * inpY;
   break;
  }
  case "/":{
   sum = inpX / inpY;
   break;
  }
  default:{
   alert("请输入加减乘除中的任意一个");
   break;
  }
  }
  inpR.value = sum.toFixed(2);
  
 }
 </script>
</html>

再给大家分享一个稍微复杂些的计算器

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
body,ul{ margin:0px; padding:0px;}
body{ background:#AF6332}
li{ list-style:none;}
.fl{ float:left;}
.fr{ float:right;}
.clearfix:after{ content:""; display:block;clear:both}
.clearfix{zoom:1;}
/*是用inset可以将外部阴影改成内部阴影;若要实现内外阴影同时存在,将其并在一行用逗号隔开*/
.calBox{ width:460px; padding-bottom:10px;background:#FDFDFD; border-radius:5px; position:absolute; left:50%; top:50%; margin-left:-230px; margin-top:-225px; box-shadow:0px 0px 10px rgba(0,0,0,0.8),0px 0px 10px rgba(0,0,0,0.5) inset; -webkit-box-shadow:0px 0px 10px rgba(0,0,0,0.8),0px 0px 10px rgba(0,0,0,0.5) inset; background:#F9F9F9; overflow:hidden}
input{ width:406px; height:82px; margin:10px 7px 0px; border-radius:5px; border:1px solid #64655F; box-shadow:0px 5px 2px rgba(157,157,145,0.8) inset; -webkit-box-shadow:0px 5px 2px rgba(157,157,145,0.8) inset; outline:none; background:#FCFDEB; text-align:right; font-family:"微软雅黑"; font-size:40px; padding:0px 10px;}
ul{}
li{ list-style:none; width:74px; height:34px; line-height:34px; text-align:center; font-family:"微软雅黑"; border:1px solid #8B8B8B; border-radius:5px; background:url(img/calBg) repeat-x; float:left; margin:12px 6px 0px;}
.one li{ height:44px; background:url(calBg1.jpg) repeat-x; line-height:44px;cursor:pointer;}
.one .orange{ background:url(calBg2.jpg) repeat-x; border:1px solid #875733;}
.one .black{ background:url(calBg3.jpg) repeat-x; border:1px solid #363636; color:#fff;}
.one .gray{ background:url(calBg4.jpg) repeat-x; border:1px solid #5F6366;}
.zero{ width:160px;}
.one .deng{ background:url(calBg5.jpg); height:100px;}
.twoBox{ width:353px; overflow:hidden; }
.two{ width:358px;}
.calBox .three { margin:0px}
.calu{ padding:0px 10px; width:470px;}
</style>
<script>
function findArr(a,c){for(var b=0;b<a.length;b++){if(a[b]==c){return true}}return false}function getClass(d,f){if(document.getElementsByClassName){return d.getElementsByClassName(f)}else{var a=[];var e=document.getElementsByTagName("*");for(var c=0;c<e.length;c++){var b=e[c].className.split(" ");if(findArr(b,f)){a.push(e[c])}}return a}};
window.onload=function()
{
	var aNum=getClass(document,'num');
	var oText=document.getElementById('text');
	var aPer=getClass(document,'oper');
	var oPer=document.getElementById('per');
	var oText1=document.getElementById('text1');
	var oDeng=getClass(document,'deng')[0];
	var oSq=getClass(document,'sq')[0];
	var oRec=getClass(document,'rec')[0];
	var oZheng=getClass(document,'zheng')[0];
	var oOn=getClass(document,'on')[0];
	var oOff=getClass(document,'off')[0];
	var oClea=getClass(document,'clea')[0];	
	var bOnOrOffClick=false;	
	
	function fnNum(a)
	{		
		
		
		var bClear=false;
		oText.value='0'	
		
		
		for(var i=0;i<aNum.length;i++)
		{						
			aNum[i].onclick=function()
			{	
				if(!bOnOrOffClick)return;
				
				if(bClear)
				{					
					
					bClear=false;
				}
					
				
				if(oText.value.indexOf('.')!=-1)
				{
					if(this.innerHTML=='.')
					{
						return;	
					}	
				}
				if(oPer.value&&oText.value&&oText1.value=='')
				{									
					oText1.value=oText.value;	
					oText.value='';																
				}	
							
				var re=/^0\.{1}\d+$/;
				var re1=/^([0]\d+)$/;	
				oText.value+=this.innerHTML;
				
				
				if(re.test(oText.value))
				{
					return;
				}
					
				if(re1.test(oText.value))
				{	
					oText.value=this.innerHTML;				
				}
			}	
			//符号部分的添加
			for(var j=0;j<aPer.length;j++)
			{			
				aPer[j].onclick=function()
				{					
					
					if(oText.value&&oPer.value&&oText1.value)
					{
						var n=eval(oText1.value+oPer.value+oText.value);			
						oText.value=n;	
						oText1.value='';					
					}
					oPer.value=this.innerHTML;		
				}
									
			}
			//点击等号的时候
			oDeng.onclick=function()
			{			
				//+-*/%的情况
				if(oText1.value==''&&oPer.value==''&&oText.value=='')
				{
					return;	
				}
				var n=eval(oText1.value+oPer.value+oText.value);			
				oText.value=n;
				oText1.value='';
				oPer.value='';	
				bClear=true;																
			}
			//点击开根号的时候
			oSq.onclick=function()
			{
				var m=Math.sqrt(oText.value);	
				oText.value=m;
			}
			//点击倒数的时候
			oRec.onclick=function()
			{
				var a=1/oText.value;
				
				if(oText.value=='0')
				{
					a='正无穷'	
				}
				oText.value=a;	
			}
			//正负号的时候
			oZheng.onclick=function()
			{
				if(oText.value>0)
				{
					oText.value=-oText.value;
				}	
				else
				{
					oText.value	=-oText.value;	
				}
			}	
			//清屏的时候
			oClea.onclick=function()
			{
				oText.value='0';
				oText1.value='';
				oPer.value='';	
			}	
		}	
	}
	//on时
	oOn.onclick=function()
	{
		bOnOrOffClick=true;
		fnNum(bOnOrOffClick);	
	}	

	//off时
	oOff.onclick=function()
	{		
		bOnOrOffClick=false;
		fnNum(bOnOrOffClick);
		oText.value='';
	}
}
</script>
</head>

<body>
<div class="calBox">	
  <div class="calu">
  	<input type="text" id="text">  	
    <ul class="one clearfix">
      <li class="orange on">开机</li>
      <li class="orange off">关机</li>
      <li class="orange clea">清屏</li>
      <li class="black zheng">+/-</li>
      <li class="black rec">1/x</li>
      <li class="num">7</li>
      <li class="num">8</li>
      <li class="num">9</li>
      <li class="gray oper">/</li>
      <li class="black oper">%</li>
      <li class="num">4</li>
      <li class="num">5</li>
      <li class="num">6</li>
      <li class="gray oper">*</li>
      <li class="black sq">√</li>      
      <!-- -->      
    </ul>
    <div class="clearfix">
      <div class="twoBox fl">
      	<ul class="one fl two">
          <li class="num">1</li>
          <li class="num">2</li>
          <li class="num">3</li>
          <li class="gray oper">-</li>
          <li class="zero num">0</li>
          <li class="num">.</li>
          <li class="gray oper">+</li>
        </ul>
      </div>
      <ul class="one three clearfix fl">
        <li class="black deng fl">=</li>
      </ul>    
    </div>
  </div>
</div>
<input type="text" id="per" style="display:none">
<input type="text" id="text1" style="display:none">
</body>
</html>

效果图演示

原生JavaScript制作计算器

Javascript 相关文章推荐
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
Jul 21 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
Jan 16 Javascript
jQuery 三击事件实现代码
Sep 11 Javascript
jquery.form.js用法之清空form的方法
Mar 07 Javascript
js全选实现和判断是否有复选框选中的方法
Feb 17 Javascript
javascript冒泡排序小结
Apr 10 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
Jul 04 Javascript
Bootstrap 填充Json数据的实例代码
Jan 11 Javascript
vue.js从安装到搭建过程详解
Mar 17 Javascript
原生js中ajax访问的实例详解
Sep 19 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
vue中v-for通过动态绑定class实现触发效果
Dec 06 Javascript
JavaScript 实现的checkbox经典实例分享
Oct 16 #Javascript
JavaScript正则表达式实例详解
Oct 16 #Javascript
js实现碰撞检测特效代码分享
Oct 16 #Javascript
js+css3制作时钟特效
Oct 16 #Javascript
js实现可旋转的立方体模型
Oct 16 #Javascript
移动端滑动插件Swipe教程
Oct 16 #Javascript
类似于QQ的右滑删除效果的实现方法
Oct 16 #Javascript
You might like
php自动适应范围的分页代码
2008/08/05 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
node.js中的Socket.IO使用实例
2014/11/04 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
Python不规范的日期字符串处理类
2014/06/10 Python
Python实现115网盘自动下载的方法
2014/09/30 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
python reverse反转部分数组的实例
2018/12/13 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
python在协程中增加任务实例操作
2021/02/28 Python
法国时尚童装网站:Melijoe
2016/08/10 全球购物
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
电焊工工作岗位职责
2014/02/06 职场文书
租赁意向书范本
2014/04/01 职场文书
给校长的建议书600字
2014/05/15 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
政府四风问题整改措施
2014/10/04 职场文书
爱的承诺书
2015/01/20 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
让子弹飞观后感
2015/06/11 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA