括号功能未实现,后续更

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>计算器</title>
<style>
body,p,input,ul,li,div{
margin: 0;
padding: 0;
}
#calc{
position: relative;
border-radius: 10px;
margin: 0 auto;
width: 400px;
height: 500px;
background: #ccc;
}
p{
text-align: center;
}
.f-text{
padding-top: 10px;
box-sizing: border-box;
border: 0;
margin: 0 auto;
font-size: 30px; text-align: right;
width: 400px;
height: 60px;
}
ul{
list-style-type: none; }
ul li{ float: left;
width: 90px;
height: 50px;
margin: 25px 10px 0 0;
font-size: 30px;
font-family: Arial, Helvetica, sans-serif; }
ul li a{
margin: 0 auto;
display: block;
width: 60px;
height: 60px;
line-height: 50px;
box-sizing: border-box;
border-radius: 10px;
box-shadow: white;
text-align: center;
text-decoration: none;
color: white;
background: black;
}
ul li a:hover{
cursor: pointer;
color: saddlebrown;
}
#formula{
margin-left: -400px;
box-sizing: border-box;
border: 0;
margin-top: -60px;
position: absolute;
width: 400px;
height: 20px;
}
</style>
</head>
<body>
<div id="calc">
<p>简易计算器</p>
<input class="f-text" type="text" readonly="readonly" maxlength="9" value="0" /> <ul>
<li class="btn-1"><a href="javascript:void(0)">c</a></li>
<li class="btn-1"><a href="javascript:void(0)">%</a></li>
<li class="btn-1"><a href="javascript:void(0)">/</a></li>
<li class="btn-1"><a href="javascript:void(0)">x</a></li>
<li><a href="javascript:void(0)">7</a></li>
<li><a href="javascript:void(0)">8</a></li>
<li><a href="javascript:void(0)">9</a></li>
<li class="btn-1"><a href="javascript:void(0)">-</a></li>
<li><a href="javascript:void(0)">4</a></li>
<li><a href="javascript:void(0)">5</a></li>
<li><a href="javascript:void(0)">6</a></li>
<li class="btn-1"><a href="javascript:void(0)">+</a></li>
<li><a href="javascript:void(0)">1</a></li>
<li><a href="javascript:void(0)">2</a></li>
<li><a href="javascript:void(0)">3</a></li>
<li class="btn-2"><a href="javascript:void(0)">=</a></li>
<li class="btn-3"><a href="javascript:void(0)">0</a></li>
<li><a href="javascript:void(0)">.</a></li>
<li><a href="javascript:void(0)">(</a></li>
<li><a href="javascript:void(0)">)</a></li>
</ul>
<input id="formula" type="text" readonly="readonly" value=""/>
</div>
</body>
</html>
<script>
var calc=document.getElementById("calc");
var a=calc.getElementsByTagName("a");
var input=calc.getElementsByTagName("input")[0];
var formula=document.getElementById("formula");
var s=false;
var i; for(i=0;i<a.length;i++){
a[i].onfocus=function(){
this.blur()
};
a[i].onclick=function(){
switch(this.innerHTML){
case "c":
input.value=0;
formula.value="";
break;
case "%":
count("%")
break;
case "x":
count("*")
break;
case "-":
count("-")
break;
case "+":
count("+")
break;
case "(":
count("(")
break;
case ")":
count(")")
break;
case "=":
s || (formula.value+=input.value); input.value=eval(formula.value.replace(/\%\/\*\-\+/,''));//输入的值进行运算后得到的值 input.value=input.value.substr(0,10).replace("NaN",0);//计算输入变量和输出结果最多前10位,如果不是数字返回0 s=true;
break;
case ".":
if(input.value.search(/[\.\%\/\*\-\+]/)!=-1)//输入的值为非运算符时 break;
default:
s && (input.value=0,formula.value="",s=false);
input.value.length<10 &&(input.value=(input.value+this.innerHTML).replace(/^[0\%\/\*\-\+](\d)/,"$1")); }
}
}
function count(d){ var reg = /[\%\/\*\-\+]$/;
if(s)
{ //错误处理
formula.value=input.value + d;
input.value=d;
s=false;
}
else
{ //正确处理
reg.test(input.value) || (formula.value+=input.value);
console.log('3',/[\%\/\*\-\+]$/.test(input.value)); input.value=d;
console.log("n",input.value);
reg.test(formula.value) || (formula.value+=input.value);
formula.value=formula.value.slice(-1)!=d ? formula.value.replace(/.$/,d):formula.value
}
}
</script>

  

JS 实现计算器功能的更多相关文章

  1. JS事件 编程练习-自制计算器 使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。

    编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...

  2. 使用html+css+js实现计算器

    使用html+css+js实现计算器,开启你的计算之旅吧 效果图: 代码如下,复制即可使用: <!DOCTYPE html><html lang="en"> ...

  3. 完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能

    #!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input(" ...

  4. JS实现注销功能

    JS实现注销功能,代码如下: <script> window.history.forward(1); </script> 这个代码的用法就是: 比如,我们此时有两个页面:Log ...

  5. javaWeb 使用 jsp 和 javaBean 实现计算器功能

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  6. JS全选功能代码优化

    原文:JS全选功能代码优化 JS全选功能代码优化 最近在看javascript MVC那本书,也感觉到自己写的代码也并不优雅,所以一直在想 用另一种模式来编写JS代码,所以针对之前的简单的JS全选功能 ...

  7. CI 结合 vue.js 的搜索功能模块

    CI 结合 vue.js 的搜索功能模块 最近在有优化公司后台的某个模块的搜索功能优化 原先的是这个样子的,很是单调: 老大给我找个图希望我能弄成这样子: 经过不断修改,最后成了这样子 是不是比以前好 ...

  8. 网站开发进阶(十二)JS实现打印功能(包括打印预览、打印设置等)

    JS实现打印功能(包括打印预览.打印设置等) 绪 最近在进行项目开发时,需要实现后台管理端打印功能,遂在网上一阵搜索,搜到了很多相关的文章.其中绝大部分文章都是使用的Lodop5.0(Web打印和套打 ...

  9. C#实现按键计算器功能

    C#实现按键计算器功能 (一次失败的编程) 界面: 代码如下: using System; using System.Collections.Generic; using System.Compone ...

随机推荐

  1. 对集合使用Comparator

    1 import java.util.Comparator; 2 import java.util.PriorityQueue; 3 4 /** 5 * 对集合使用Comparator,不改变对象的自 ...

  2. WPF路由事件

    ​    这节讲一下WPF中的路由事件(Routed Event). [什么是事件] 在了解路由事件前,我们应先来了解一下什么是事件(Event). 在Windows系统中,像鼠标单击,双击,移动这样 ...

  3. 跟我一起用unity做小地图!

    lol的小地图 转载爬虫请自重,未问先转没排面 不爱多做铺垫,小地图对于一些游戏来说多重要大家都懂,不然你也不会来看我这篇文章的,对不对? 话不多说,开搞! 一.主体功能 一般来说,游戏里的迷你地图都 ...

  4. MySQL-SQL基础-子查询

    #子查询-某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询.用于子查询的关键字主要包括: in.not in.=.!=.exists.not exist ...

  5. i++ ++i 理解

    i++与++i怎么运算,解决办法: i++规则是在表达式中先取i的值使用,后让i的值变化成加1后的值. 举例:如在式中 j=i++,他就会变成这样的两步,第一步先执行j=i,第二步执行i=i+1. + ...

  6. Docker容器编排工具——docker-compose

    1.docker-compose介绍 2.使用的三个步骤 3.安装docker-compose yum install docker-compose 4.docker-compose.yml 文件 ( ...

  7. 20210821 打表,蛇,购物,ants

    考场 T1 没看懂 T4 一眼回滚莫队,但忘记怎么写了,小慌 模拟 T1 题意的时候教练让 zsy 澄清了一下,确定了我不会做... T2 一看就是毒瘤题,T3 感觉比较可做 T4 确定了回滚的细节, ...

  8. Java并发知识总结,超详细!

    首先给大家分享一个github仓库,上面放了200多本经典的计算机书籍,包括C语言.C++.Java.Python.前端.数据库.操作系统.计算机网络.数据结构和算法.机器学习.编程人生等,可以sta ...

  9. IT人计算机网络浅析

    LAN: 局域网 local Area Network WAN: 广域网 Wide Area Network WAN = LAN +LAN+....+LAN 多个LAN 组成 WAN OSI 七层协议 ...

  10. AgileConfig轻量级配置中心1.4.0发布,重构了发布功能

    加入 NCC 先说一个事,AgileConfig 在 7 月底终于通过了 NCC 社区的审核,正式成为了 NCC 大家庭的一员.这对 AgileConfig 来说是一个里程碑,希望加入 NCC 后能更 ...