javascript写的简单的计算器,内容很多,方法实用,推荐


Posted in Javascript onDecember 29, 2011

最近用javascript写了一个简单的计算器,自己测试感觉还好,先给大家观赏下界面:

javascript写的简单的计算器,内容很多,方法实用,推荐

界面就是这样了,但是功能如何呢?

现在只是个简单的标准计算器,能进行加减乘除连续运算,以及求余运算。如果发生被除数为零的错误,下面会给出提示,就像这样:

javascript写的简单的计算器,内容很多,方法实用,推荐

自己不知道写的怎么样,但是对于新手来说,这肯定是一份大餐,里面可以接触到的东西不少,可以拿来学习。如果有高手看出里面的疏漏、错误等望不吝赐教,给予指点。

下面贴上代码,希望里面的注释足够多了。
js部分:

var num=0,result=0,numshow="0"; 

var operate=0; //判断输入状态的标志 

var calcul=0; //判断计算状态的标志 

var quit=0; //防止重复按键的标志 

function command(num){ 

var str=String(document.calculator.numScreen.value); //获得当前显示数据 

str=(str!="0") ? ((operate==0) ? str : "") : ""; //如果当前值不是"0",且状态为0,则返回当前值,否则返回空值; 

str=str + String(num); //给当前值追加字符 

document.calculator.numScreen.value=str; //刷新显示 

operate=0; //重置输入状态 

quit=0; //重置防止重复按键的标志 

} 

function dzero(){ 

var str=String(document.calculator.numScreen.value); 

str=(str!="0") ? ((operate==0) ? str + "00" : "0") : "0"; //如果当前值不是"0",且状态为0,则返回当str+"00",否则返回"0"; 

document.calculator.numScreen.value=str; 

operate=0; 

} 

function dot(){ 

var str=String(document.calculator.numScreen.value); 

str=(str!="0") ? ((operate==0) ? str : "0") : "0"; //如果当前值不是"0",且状态为0,则返回当前值,否则返回"0"; 

for(i=0; i<=str.length;i++){ //判断是否已经有一个点号 

if(str.substr(i,1)==".") return false; //如果有则不再插入 

} 

str=str + "."; 

document.calculator.numScreen.value=str; 

operate=0; 

} 

function del(){ //退格 

var str=String(document.calculator.numScreen.value); 

str=(str!="0") ? str : ""; 

str=str.substr(0,str.length-1); 

str=(str!="") ? str : "0"; 

document.calculator.numScreen.value=str; 

} 

function clearscreen(){ //清除数据 

num=0; 

result=0; 

numshow="0"; 

document.calculator.numScreen.value="0"; 

} 

function plus(){ //加法 

calculate(); //调用计算函数 

operate=1; //更改输入状态 

calcul=1; //更改计算状态为加 

} 

function minus(){ //减法 

calculate(); 

operate=1; 

calcul=2; 

} 

function times(){ //乘法 

calculate(); 

operate=1; 

calcul=3; 

} 

function divide(){ //除法 

calculate(); 

operate=1; 

calcul=4; 

} 

function persent(){ //求余 

calculate(); 

operate=1; 

calcul=5; 

} 

function equal(){ 

calculate(); //等于 

operate=1; 

num=0; 

result=0; 

numshow="0"; 

} 

// 

function calculate(){ 

numshow=Number(document.calculator.numScreen.value); 

if(num!=0 && quit!=1){ //判断前一个运算数是否为零以及防重复按键的状态 

switch(calcul){ //判断要输入状态 

case 1:result=num+numshow;break; //计算"+" 

case 2:result=num-numshow;break; //计算"-" 

case 3:result=num*numshow;break; 

case 4:if(numshow!=0){result=num/numshow;}else{document.getElementById("note").innerHTML="被除数不能为零!"; setTimeout(clearnote,4000)} break; 

case 5:result=num%numshow;break; 

} 

quit=1; //避免重复按键 

} 

else{ 

result=numshow; 

} 

numshow=String(result); 

document.calculator.numScreen.value=numshow; 

num=result; //存储当前值 

} 

function clearnote(){ //清空提示 

document.getElementById("note").innerHTML=""; 

}

html部分:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>写给新手:js表单操作(四) 简单计算器(二)</title> 

<style type="text/css"> 

body { 

font-size:12px; 

font-family:Arial, Georgia, "Times New Roman", Times, serif; 

color:#555; 

text-align:center; 

background-color:#e2e2e2; 

} 

h6{ 

margin:0; 

font-size:12px; 

} 

#calculator { 

width:240px; 

height:auto; 

overflow:hidden; 

margin:10px auto; 

border:#fff 1px solid; 

padding-bottom:10px; 

background-color:#f2f2f2; 

} 

#calculator div { 

clear:both; 

} 

#calculator ul{ 

padding:0; 

margin:5px 14px; 

border:#fff 1px solid; 

height:auto; 

overflow:hidden 

} 

#calculator li{ 

list-style:none; 

float:left; 

width:32px; 

height:32px; 

margin:5px; 

display:inline; 

line-height:32px; 

font-size:14px; 

background-color:#eaeaea; 

} 

#calculator li.tool{ 

background-color:#e2e2e2; 

} 

#calculator li:hover{ 

background-color:#f9f9f9; 

cursor:pointer; 

} 

#calculator li:active{ 

background-color:#fc0; 

cursor:pointer; 

} 

#calculator li.tool:active{ 

background-color:#d8e8ff; 

cursor:pointer; 

} 

#calcu-head { 

text-align:left; 

padding:10px 15px 5px; 

} 

span.imyeah { 

float:right; 

color:#ccc; 

} 

span.imyeah a{ 

color:#ccc; 

} 

.screen{ 

width:200px; 

height:24px; 

line-height:24px; 

padding:4px; 

border:#e6e6e6 1px solid; 

border-bottom:#f2f2f2 1px solid; 

border-right:#f2f2f2 1px solid; 

margin:10px auto; 

direction:ltr; 

text-align:right; 

font-size:16px; 

color:#999; 

} 

#calcu-foot{ 

text-align:left; 

padding:10px 15px 5px; 

height:auto; 

overflow:hidden; 

} 

span#note{ 

float:left; 

width:210px; 

height:auto; 

overflow:hidden; 

color:red; 

} 

span.welcome{ 

clear:both; 

color:#999; 

} 

span.welcome a{ 

float:right; 

color:#999; 

} 

</style> 

<script language="javascript"> 

//此处插入上面的js代码 

</script> 

</head> 

<body> 

<div id="calculator"> 

<div id="calcu-head"><span class="imyeah">© <a href="http://www.cnblogs.com/imyeah/" target="_blank">I'm Yeah!</a></span><h6>简单的计算器</h6></div> 

<form name="calculator" action="" method="get"> 

<div id="calcu-screen"> 

<!--配置显示窗口,使用onfocus="this.blur();"避免键盘输入--> 

<input type="text" name="numScreen" class="screen" value="0" onfocus="this.blur();" /> 

</div> 

<div id="calcu-btn"> 

<ul> <!--配置按钮--> 

<li onclick="command(7)">7</li> 

<li onclick="command(8)">8</li> 

<li onclick="command(9)">9</li> 

<li class="tool" onclick="del()">←</li> 

<li class="tool" onclick="clearscreen()">C</li> 

<li onclick="command(4)">4</li> 

<li onclick="command(5)">5</li> 

<li onclick="command(6)">6</li> 

<li class="tool" onclick="times()">×</li> 

<li class="tool" onclick="divide()">÷</li> 

<li onclick="command(1)">1</li> 

<li onclick="command(2)">2</li> 

<li onclick="command(3)">3</li> 

<li class="tool" onclick="plus()">+</li> 

<li class="tool" onclick="minus()">-</li> 

<li onclick="command(0)">0</li> 

<li onclick="dzero()">00</li> 

<li onclick="dot()">.</li> 

<li class="tool" onclick="persent()">%</li> 

<li class="tool" onclick="equal()">=</li> 

</ul> 

</div> 

<div id="calcu-foot"> 

<span id="note"></span> 

<span class="welcome">欢迎使用javascript计算器!<a href="http://www.cnblogs.com/imyeah" target="_blank">反馈</a></span> 

</div> 

</form> 

</div> 

</body> 

</html>
Javascript 相关文章推荐
javascript管中窥豹 形参与实参浅析
Dec 17 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
Jul 20 Javascript
js+xml生成级联下拉框代码
Jul 24 Javascript
jQuery实现文件上传进度条特效
Aug 12 Javascript
JavaScript排序算法动画演示效果的实现方法
Oct 18 Javascript
jQuery图片加载显示loading效果
Nov 04 Javascript
JavaScript获取键盘按键的键码(参照表)
Jan 10 Javascript
jQuery实现文章图片弹出放大效果
Apr 06 jQuery
简单说说angular.json文件的使用
Oct 29 Javascript
用js简单提供增删改查接口
May 12 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
JavaScript中两个感叹号的作用说明
Dec 28 #Javascript
javascript (用setTimeout而非setInterval)
Dec 28 #Javascript
js字符编码函数区别分析
Dec 28 #Javascript
javascript获得服务器端控件的ID的实现代码
Dec 28 #Javascript
Jquery异步请求数据实例代码
Dec 28 #Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
Dec 26 #Javascript
js使用函数绑定技术改变事件处理程序的作用域
Dec 26 #Javascript
You might like
77A一级收信机修理记
2021/03/02 无线电
供参考的 php 学习提高路线分享
2011/10/23 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
Python合并多个装饰器小技巧
2015/04/28 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
python并发编程之线程实例解析
2017/12/27 Python
python如何让类支持比较运算
2018/03/20 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
大学生四年生活自我鉴定
2013/11/21 职场文书
2013的个人自我评价
2013/12/26 职场文书
党员群众路线承诺书
2014/05/20 职场文书
企业文化宣传标语
2014/06/09 职场文书
本科生自荐信
2014/06/18 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python