JS实现简易计算器


Posted in Javascript onFebruary 14, 2020

用JS实现简易计算器,供大家参考,具体内容如下

首先创建结构和样式

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <style>
  body{
   margin:0;
   padding:0;
   background-color: #abcdef;
  }
  .cal{
   width:560px;
   height:100px;
   margin:0 auto;
   padding-top:300px;
  }
 </style>
</head>
<body>

 <div class="cal">
  <p>
   <input type="text" class="num1" value="1">
   <span class="sign">+</span>
   <input type="text" class="num2" value="1">
   <span>=</span>
   <span class="res">2</span>
  </p>
  <p>
   <input type="button" value="+">
   <input type="button" value="-">
   <input type="button" value="*">
   <input type="button" value="/">
  </p>   
 </div>
<script>


</script>

</body>
</html>

然后添加Java script

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <style>
  body{
   margin:0;
   padding:0;
   background-color: #abcdef;
  }
  .cal{
   width:560px;
   height:100px;
   margin:0 auto;
   padding-top:300px;
  }
 </style>
</head>
<body>

 <div class="cal">
  <p>
   <input type="text" class="num1" value="1">
   <span class="sign">+</span>
   <input type="text" class="num2" value="1">
   <span>=</span>
   <span class="res">2</span>
  </p>
  <p>
   <input type="button" value="+" class="btn">
   <input type="button" value="-" class="btn">
   <input type="button" value="*" class="btn">
   <input type="button" value="/" class="btn">
  </p>   
 </div>

<script>
 var cal=document.querySelector(".cal");
 var num1=cal.querySelector(".num1");
 var num2=cal.querySelector(".num2");
 var sign=cal.querySelector(".sign");
 var res=cal.querySelector(".res");

 var btns=cal.querySelectorAll(".btn");

 btns[0].onclick=add;
 btns[1].onclick=subtract;
 btns[2].onclick=multiply;
 btns[3].onclick=divide;

 function add(){
  sign.innerHTML="+";
  //由于DOM获取到的值都是字符串形式,因此进行操作时需要先转为number类型
  res.innerHTML=Number(num1.value)+Number(num2.value);
 }
 function subtract(){
  sign.innerHTML="-";
  res.innerHTML=Number(num1.value)-Number(num2.value);
 }
 function multiply(){
  sign.innerHTML="*";
  res.innerHTML=Number(num1.value)*Number(num2.value); 
 }
 function divide(){
  sign.innerHTML="/";
  res.innerHTML=Number(num1.value)/Number(num2.value); 
 }
</script>

</body>
</html>

代码的优化:

循环实现绑定

给一个外部接口,用于新增运算

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <style>
  body{
   margin:0;
   padding:0;
   background-color: #abcdef;
  }
  .cal{
   width:560px;
   height:100px;
   margin:0 auto;
   padding-top:300px;
  }
 </style>
</head>
<body>

 <div class="cal">
  <p>
   <input type="text" class="num1" value="1">
   <span class="sign">+</span>
   <input type="text" class="num2" value="1">
   <span>=</span>
   <span class="res">2</span>
  </p>
  <p>
   <input type="button" value="+" class="btn" title="add">
   <input type="button" value="-" class="btn" title="subtract">
   <input type="button" value="*" class="btn" title="multiply">
   <input type="button" value="/" class="btn" title="divide">
   <input type="button" value="%" class="btn" title="mod">
  </p>   
 </div>

<script>
 var cal=document.querySelector(".cal");
 var num1=cal.querySelector(".num1");
 var num2=cal.querySelector(".num2");
 var sign=cal.querySelector(".sign");
 var res=cal.querySelector(".res");

 var btns=cal.querySelectorAll(".btn");

 //给每个按钮绑定事件
 for(var i=0;i<btns.length;i++){
  operate(i);
 }

 //运算函数
 function operate(i){
  var op=btns[i].value;//获取运算
  var opName=btns[i].title;//获取运算名
  //绑定事件
  btns[i].onclick=function(){
   sign.innerHTML=op;
   res.innerHTML=operation[opName](Number(num1.value),Number(num2.value));
  }
 }

 var operation={
  add:function(n1,n2){
   return n1+n2;
  },
  subtract:function(n1,n2){
   return n1-n2;
  },
  multiply:function(n1,n2){
   return n1*n2;
  },
  divide:function(n1,n2){
   return n1/n2;
  },
  //给一个新增运算的接口
  addOperation:function(name,fn){
   //如果该运算不存在
   if(!this.name){
    this[name]=fn;
   }
  }
 }

 //新增取余运算
 operation.addOperation("mod",function(n1,n2){
  return n1%n2;
 });
</script>

</body>
</html>

这样就圆满完成咯

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery判断iframe中元素是否存在的方法
May 11 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
Jun 16 Javascript
AspNet中使用JQuery上传插件Uploadify详解
May 20 Javascript
JavaScript基础篇(6)之函数表达式闭包
Dec 11 Javascript
jquery简单插件制作(fn.extend)完整实例
May 24 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
May 26 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
Jul 27 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
Sep 01 Javascript
Vue文件配置全局变量的实例
Sep 06 Javascript
vue将后台数据时间戳转换成日期格式
Jul 31 Javascript
vue-element-admin 菜单标签失效的解决方式
Nov 12 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 #Javascript
node.js中npm包管理工具用法分析
Feb 14 #Javascript
vue-cli创建的项目中的gitHooks原理解析
Feb 14 #Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 #Javascript
bootstrap-paginator服务器端分页使用方法详解
Feb 13 #Javascript
JavaScript实现Tab选项卡切换
Feb 13 #Javascript
Angular 多模块项目构建过程
Feb 13 #Javascript
You might like
php 操作符与控制结构
2012/03/07 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
django文档学习之applications使用详解
2018/01/29 Python
OpenCV 边缘检测
2019/07/10 Python
python 穷举指定长度的密码例子
2020/04/02 Python
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
销售高级职员求职信
2013/10/29 职场文书
幼儿园教师奖惩制度
2014/02/01 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
股东授权委托书范文
2014/09/13 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
英语教师求职信范文
2015/03/20 职场文书
端午节寄语2015
2015/03/23 职场文书
入党培养人考察意见
2015/06/08 职场文书
首次购房证明
2015/06/19 职场文书
中秋节随笔
2015/08/15 职场文书
2019广播稿怎么写
2019/04/17 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android