<html>
<head>
<style>
 .short{height:50px;width:55px;float:left;}
</style>
</head>
<body>
<script>
var xianshi="";
var shuzi="";
var huanchun="";

//如果连续输入数字,则累加其值
function num(a){
  var pingmu=document.getElementById("pingmu");
  xianshi+=a;
  pingmu.value=xianshi;
  shuzi+=a
}

//如果缓存和数字为空,则第一个输入不能是符号
function fum(b){
  if(shuzi==""&&huanchun=="")return;   
  huanchun+=shuzi+b;
  shuzi="";
  xianshi="";
}

//求出缓存值,并清空其他值
function sum(){
  huanchun+=shuzi;
  var pingmu=document.getElementById("pingmu");
  huanchun=eval(huanchun);
  pingmu.value=huanchun;
  shuzi=""
  xianshi=""
}

//将屏幕上的值添加-号后,保存到缓存或者数字当中
function sign(){
  var pingmu=document.getElementById("pingmu")
  var value=pingmu.value;
  value="(-("+value+"))"
  value=eval(value)
  pingmu.value=value;
  if(shuzi=="")huanchun=value;
  else{shuzi=value;}
}

//倒数
function reciprocal(){
  var pingmu=document.getElementById("pingmu")
  var value=pingmu.value;
  value="1/"+value
  value=eval(value);
  pingmu.value=value;
  if(shuzi=="")huanchun=value;
  else{shuzi=value;}
}

//开方
function nsqrt(){
  var pingmu=document.getElementById("pingmu")
  var value=pingmu.value;
  value=eval(value);
  value=Math.sqrt(value);
  pingmu.value=value;
  if(shuzi=="")huanchun=value;
  else{shuzi=value;}
}

//小数点
function spot(){
  var pingmu=document.getElementById("pingmu");
  if(shuzi==""||xianshi==""){shuzi="0";xianshi="0"}
  shuzi+=".";
  xianshi+=".";
  pingmu.value=xianshi;
}

//十进制
function ten(){
  var total=0,pows=0
  var pingmu=document.getElementById("pingmu");
  var value=pingmu.value;
  var arr=value.split("");
  arr=arr.reverse();
  for(i=0;i<arr.length;i++){
  arr[i]-=0;
  pows=Math.pow(2,i);
  total+=arr[i]*pows;
  }
  pingmu.value=total;
  jisuan="";xianshi="";
}

//二进制
function two(){
  var pingmu=document.getElementById("pingmu");
  var value=pingmu.value;
  value-=0;
  var arr=new Array();
  for(i=0;1;i++){
  if(value==0)break;
  arr[i]=value%2;
  value/=2;
  value=parseInt(value);
  }
  arr=arr.reverse();
  str=arr.join("");
  pingmu.value=str;
  xianshi="";jisuan="";
}

//清空
function cee(){
  shuzi="";
  xianshi="";
  document.getElementById('pingmu').value="";
}

//清除
function ccc(){
  shuzi="";
  huanchun="";
  xianshi="";
  document.getElementById('pingmu').value="";
}

//退符
function cbb(){
  shuzi=shuzi.substring(0,shuzi.length-1)
  xianshi=xianshi.substring(0,xianshi.length-1);
  pingmu.value=xianshi;
}

</script>

<input id="pingmu" style="height: 36px; width: 282px; text-align: right;" type="text" /><br /><br />

<button class="short" onclick="cbb()" value="c">&larr;</button>
<button class="short" onclick="cee()" value="c">CE</button>
<button class="short" onclick="ccc()" value="c">C</button>
<button class="short" onclick="ten()" value="x">dec</button>
<button class="short" onclick="two()" value="x">bin</button><br /><br /><br />

<button class="short" onclick="num(this.value)" value="7">7</button>
<button class="short" onclick="num(this.value)" value="8">8</button>
<button class="short" onclick="num(this.value)" value="9">9</button>
<button class="short" onclick="fum(this.value)" value="*">*</button>
<button class="short" onclick="fum(this.value)" value="/">/</button><br /><br /><br />

<button class="short" onclick="num(this.value)" value="4">4</button>
<button class="short" onclick="num(this.value)" value="5">5</button>
<button class="short" onclick="num(this.value)" value="6">6</button>
<button class="short" onclick="fum(this.value)" value="-">-</button>
<button class="short" onclick="fum(this.value)" value="%">%</button><br /><br /><br />

<button class="short" onclick="num(this.value)" value="1">1</button>
<button class="short" onclick="num(this.value)" value="2">2</button>
<button class="short" onclick="num(this.value)" value="3">3</button>
<button class="short" onclick="fum(this.value)" value="+">+</button>
<button class="short" onclick="sum()" value="=">=</button>
<br /><br /><br />

<button class="short" onclick="num(this.value)" value="0">0</button>
<button class="short" onclick="sign()" value="+/-">+/-</button>
<button class="short" onclick="spot()" value=".">.</button>
<button class="short" onclick="reciprocal()" value="1/x">1/x</button>
<button class="short" onclick="nsqrt()" value="sqrt">sqrt</button><br /><br /><br /></p>
</script>
</body>

.short { height: 50px; width: 55px; float: left }


CE
C
dec
bin

7
8
9
*
/

4
5
6
-
%

1
2
3
+
=

0
+/-
.
1/x
sqrt

JavaScript 写计算器改进版的更多相关文章

  1. 用javascript写计算器

    本人新手,如果有什么不足的地方,希望可以得到指点 今天尝试用javascript写一个计算器 首先把计算器的按钮做出来,用button做好了,这样可以不用设置太多的样式 <button valu ...

  2. JavaScript写计算器

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

  3. 用javascript 写个函数返回一个页面里共使用了多少种HTML 标签

    今天我无意间看到一个面试题: 如何用javascript 写个函数返回一个页面里共使用了多少种HTML 标签? 不知你看到 是否蒙B了,如果是我 面试,肯定脑子嗡嗡的响.... 网上搜了搜也没有找到答 ...

  4. JavaScript写在Html页面的<head></head>中

    JavaScript写在Html页面的<head></head>中 ----------------- <html> <head> <style ...

  5. JavaScript写一个连连看的游戏

    天天看到别人玩连连看, 表示没有认真玩过, 不就把两个一样的图片连接在一起么, 我自己写一个都可以呢. 使用Javascript写了一个, 托管到github, 在线DEMO地址查看:打开 最终的效果 ...

  6. javascript写在<head>和<body>里的区别

    Javascript写在哪里?概括起来就是三种形式:1. 内部:Html网页的<body></body>中:2. 内部:Html网页的<head></head ...

  7. 原生javascript写的侧栏跟随效果

    浏览网站时经常看到有的网站上,当一个页面很长的时候,设定侧栏内容会跟随滚动条滚动,我们把这种效果叫做“侧栏跟随滚动”.这种特效对提高网站浏览量.文章点击率.广告点击量都有一定效果. 侧栏跟随滚动的实现 ...

  8. javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数

    javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...

  9. 用JavaScript写一个区块链

    几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术.在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的.我将会称之 ...

随机推荐

  1. java中的锁

    java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式 ...

  2. 0.Win8.1,Win10,Windows Server 2012 安装 Net Framework 3.5

    后期会在博客首发更新:http://dnt.dkill.net 网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/482280 ...

  3. HDU1671——前缀树的一点感触

    题目http://acm.hdu.edu.cn/showproblem.php?pid=1671 题目本身不难,一棵前缀树OK,但是前两次提交都没有成功. 第一次Memory Limit Exceed ...

  4. 云瓣影音网站&&微信端(已开源)

    随着该项目的发布到线上(小打小闹),即将又要开启另一段崭新的旅程.强迫自己停下来写写所学所得,个人认为总结和分享是一种很棒的学习方式.那让我们先来瞧瞧项目长的什么样.如果着急要源码的朋友,可以下拉到最 ...

  5. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  6. VS2015常用快捷键总结

    生成解决方案 F6,生成项目Shift+F6 调试执行F5,终止调试执行Shift+F5 执行调试Ctrl+F5 查找下一个F3,查找上一个Shift+F3 附加到进程Ctrl+Alt+P,逐过程F1 ...

  7. maven-sprigmvc-mybatis配置

    pom.xml配置 <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.ap ...

  8. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

  9. Unable to create the selected property page. An error occurred while automatically activating bundle net.sourceforge.pmd

    解决方案: 在命令行到eclipse目录下使用 eclipse.exe -clean

  10. 【干货分享】流程DEMO-事务呈批表

    流程名: 事务呈批表  业务描述: 办公采购.会议费用等事务的申请.流程发起时,会检查预算,如果预算不够,将不允许发起费用申请,如果预算够用,将发起流程,同时占用相应金额的预算,但撤销流程会释放相应金 ...