用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>

添加javascript功能

<!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>

JS简易计算器的实现,以及代码的优化的更多相关文章

  1. js简易计算器底层运算逻辑(带撤销功能)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. 用js制作简易计算器及猜随机数字游戏

    <!doctype html><html><head> <meta charset="utf-8"> <title>JS ...

  3. 使用html+css+js实现简易计算器

    使用html+css+js实现简易计算器, 效果图如下: html代码如下: <!DOCTYPE html> <html lang="en"> <he ...

  4. 原生JS实现简易计算器

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. [java代码库]-简易计算器(第二种)

    [java代码库]-简易计算器(第二种) 第二种方案:在程序中不使用if/switch……case等语句,完成计算器功能. <html> <head> <title> ...

  6. 项目:JS实现简易计算器案例

    组件化网页开发下的: 步骤一:让页面动起来的JavaScript深入讲解  的 项目:JS实现简易计算器案例

  7. JS实现简易计算器的7种方法

    先放图(好吧比较挫) 方法一:最容易版 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta ...

  8. js之简易计算器

    <!DOCTYPE html PUBLIC "-//W3C//Dli XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. JS编写简易计算器

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head lang=" ...

随机推荐

  1. halfcheetch win10

    HalfCheetah win10配置 1.使用Anaconda Prompt切到程序目录,执行pip install -r requirements.txt 补充说明: 使用pip与conda命令都 ...

  2. hadoop_2.6.5集群安装

    安装hadoop2.6.5集群: 1.规划设计: JacK6:NameNode,jobtracker JacK7:secondnode,datenode,tasktracker JacK8:datan ...

  3. V8垃圾回收?看这篇就够了!

    什么是内存管理 内存管理是控制和协调应用程序访问电脑内存的过程.这个过程是复杂的,对于我们来说,可以说相当于一个黑匣子. 当咱们的应用程序运行在某个操作系统中的时候,它访问电脑内存(RAM)来达成下列 ...

  4. CTF--HTTP服务--命令执行

    开门见山 1. 扫描靶机ip,发现PCS 172.18.5.1 2. 用nmap扫描靶机开放服务和服务版本 3. 再扫描靶机全部信息 4. 用nikto工具扫描http服务的敏感信息 5. 打开浏览器 ...

  5. springIOC源码接口分析(三):ApplicationContext

    一 新增方法 主要都是获取容器基本信息的一些接口,比如获取名称,id和启动时间戳,获取AutowireCapableBeanFactory等接口 二 继承接口 ApplicationContext继承 ...

  6. CSS学习笔记--Div+Css布局实战(入门)

    基本页面布局 本教程带着大家做一个简单的页面布局 最重效果如下: 1.第一部,先创建上下左右4个DIV <!DOCTYPE html> <html> <head lang ...

  7. Java基础知识之设计模式--单例模式

    Java设计模式--单例模式 声明:本文根据慕课网汤小洋老师的精品课程整理来的:慕课网 什么是设计模式(Design Pattern)? 设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设 ...

  8. Nginx(3)---代理与负载均衡

    一.代理简述 代理分为正向代理和反向代理, 正向代理:客户端与目标服务器之间增加一个代理服务器,客户端直接访问代理服务器,在由代理服务器访问目标服务器并返回客户端并返回 .比如夜深人静的时候访问的一些 ...

  9. mysql常用语句及实题训练

    基本语句操作 创建数据库: create database database-name 1 删除数据库: drop database database-name 1 修改数据名: RENAME DAT ...

  10. Java入门基础(类)

    类 在Java中表示自定义的数据类型,一个class可以是若干基本类型的组合. public class Student { public String id;//学号 public String n ...