2012/11/7 18:51:05作者:佚名来源:网络
【实例名称】
实用计算器JS代码
【实例描述】
JavaScript虽然是脚本语言,但也可以设计一些常用的工具,如日历,计算器等。本例学习使用JavaScript制作计算器。
【实例代码】
<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>标题页-学无忧(www.xue51.com)</title> <script language="JavaScript"> var results='' ; //显示结果 var previouskey=''; //代表上一个字符 var re=/(\/|\*|\+|-)/ //用来判断+-*/的正则 var re2=/(\/|\*|\+|-){2}$/; //用来判断出现2次+-*/的正则 var re3=/.+(\/|\*|\+|-).+/; //用来判断小数点+-*/的正则 var re4=/\d|\./ ; //用来判断(小数点或数值)的正则 var re5=/^[^\/\*\+].+\d$/; //用来判断(以+-*/开始)的正则 var re6=/\./; //用来判断小数点的正则 //计算结果的方法 function calculate() { //判断如何用户输入了1个值,然后单击了"=" if (event.srcElement.tagName=="TD"){ if (event.srcElement.innerText.match(re4)&&previouskey=="=") results=''; if (result.innerText.match(re3)&&event.srcElement.innerText.match(re)){ if (!results.match(re5)){ result.innerText="输入错误!"; return; } //以下是要求长度只能保持在12位以内(有小数点的情况下) results=eval(results); //转换为数值 if (results.toString().length>=12&&results.toString().match(re6)) results=results.toString().substring(0,12); result.innerText=results; } //出现2次计算符号的情形 results+=event.srcElement.innerText; if (results.match(re2)) results=results.substring(0,results.length-2)+ results.charAt(results.length-1); result.innerText=results; }} function calculateresult() { //当首字符输入错误时 if (!results.match(re5)){ result.innerText="输入错误!"; return;} results=eval(results); //转换结果为数值型 if (results.toString().length>=12&&results.toString().match(re6)) results=results.toString().substring(0,12); result.innerText=results; } function pn() { //首字符为负数的计算 if (result.innerText.charAt(0)!='-') result.innerText=results='-'+result.innerText else if (result.innerText.charAt(0)=='-') result.innerText=results=result.innerText*(-1) } </script>
需要在body中添加一个Table,用来呈现计算器的外观,代码如下所示: </head> <body> <table border="0" cellspacing="0" cellpadding="0" width="400"> <tr> <td width="100%" valign="top"><table border="2" width="200" cellspacing="0" cellpadding="0" bgcolor="#000000" style="border-color:black" onClick="previouskey=event.srcElement.innerText"> <tr> <td width="100%" bgcolor="#FFFFFF" id="result" style="font:bold 20px Verdana;color:black; text-align='right'">0</td> </tr> <tr> <td width="100%" valign="middle" align="center"><table border="0" width="100%" cellspacing="0" cellpadding="0" style="font:bold 20px Verdana;color:white"> <tr><td width="80%" align="center"><table border="1" width="100%" cellspacing="0" cellpadding="0" style="cursor:hand;font:bold 20px Verdana;color:white" onMouseover="if (event.srcElement.tagName=='TD') event.srcElement.style.color='yellow'" onMouseout="event.srcElement.style.color='white'" onselectStart="return false" onClick="calculate()" height="82"> <tr><td width="25%" align="center" height="17">7</td> <td width="25%" align="center" height="17">8</td> <td width="25%" align="center" height="17">9</td> <td width="25%" align="center" height="17">/</td> </tr><tr><td width="25%" align="center" height="19">4</td> <td width="25%" align="center" height="19">5</td> <td width="25%" align="center" height="19">6</td> <td width="25%" align="center" height="19">*</td> </tr><tr><td width="25%" align="center" height="19">1</td> <td width="25%" align="center" height="19">2</td> <td width="25%" align="center" height="19">3</td> <td width="25%" align="center" height="19">-</td> </tr><tr><td width="25%" align="center" height="19">0</td> <td width="25%" align="center" height="19" onClick="pn();previouskey=1;event.cancelBubble=true">+/-</td> <td width="25%" align="center" height="19">.</td> <td width="25%" align="center" height="19">+</td> </tr></table></td><td width="20%"><div align="left"> <table border="1" width="100%" cellspacing="0" cellpadding="0"><tr><td width="100%" style="cursor:hand;font:bold 20px Verdana; color:white;text-align:center" onClick="result.innerText=0;results=''">C</td> </tr></table></div><div align="left"><table border="1" width="100%" cellspacing="0" cellpadding="0" height="81"> <tr><td width="100%" style="cursor:hand;font:bold 32px Verdana; color:white;text-align:center" onMouseover="event.srcElement.style.color='yellow'" onMouseout="event.srcElement.style.color='white'" onClick="calculateresult()">= </body> </html>
【运行效果】

【难点剖析】
本例的重点在于对用户输入字符的判断。这里要提到的就是正则表达式,其在JavaScript中的应用非常灵活,可用来判断用户输入的数字符是否合法,也可用来截取页面的内容。本例对使用的正则表达式进行了详细的注释,要了解正则表达式的详细应用语法,可参考相关资料。
【源码下载】
为了JS代码的准确性,请点击:实用计算器 进行本实例源码下载
标签: 实用 计算器 JS代码
相关文章
够快云库v6.3.24.12120免费版
详情
光影魔术手官方版 v4.7.1
详情
ADsafe净网大师v5.4.408.7000
详情
网易邮箱大师v5.3.2.1015电脑版
详情
foxmailv7.2.25.375
详情
暴风影音5v5.92.0824.1111
详情
暴风影音v5.92.0824.1111
详情
BitComet(比特彗星)v2.13.4.13Beta2
详情
路由优化大师v4.5.31.267
详情
茄子快传电脑版 v5.1.0.7
详情
搜狐影音 v7.2.1.0官方版
详情
搜狐影音客户端 v7.2.1.0
详情
迅雷影音官方版 v7.0.3.92
详情
cbox央视影音v6.0.3.4经典版
详情
potplayer播放器v1.7.22496
详情
Daum PotPlayer(已集成直播源)v1.7.22496绿色纯净美化便携增强版
详情
天国拯救2黄金版 Build.17149332-1.1.1.11377中文版
详情
燕云十六声电脑版 v1.9.31
详情
潜行者2:切尔诺贝利之心 Build.16805297豪华中文版
详情
模拟农场25豪华中文版
详情
迷你世界电脑版 v1.41.00
详情
骑马与砍杀2 v1.2.9.34019免费版
详情
侠盗猎车手圣安地列斯 v1.0最新中文版
详情
整蛊白云 v1.0
详情
地平线4 v1.476中文版
详情
圣女战旗中文v1.1.9绿色免安装版
详情
狂怒2中文
详情
红色警戒2共和国之辉电脑版 v1.0
详情
模拟人生4 v1.0中文免费版
详情
蛊婆v1.0免费版
详情
风起云涌2越南中文版 v1.6Steam正版
详情
使命召唤17官方中文版 v1.0
详情
惠买v5.4.46官方版
详情
快快查汉语字典综合官方版V5.0.0官方版
详情
尚德机构v7.8.1官方版
详情
头像精灵v3.7.0美化版
详情
运满满货主版v7.92.1.0安卓版
详情
运满满司机版app手机版v8.92.1.0安卓版
详情
网易蜗牛读书水墨版V1.9.78
详情
泼辣修图免费版v6.11.3安卓版
详情
泼辣修图安卓版v6.11.3
详情
汽车大师v7.15.5技师版
详情
步多多v2.8.1安卓版
详情
新浪新闻v8.43.7官方版
详情
拓词v14.21安卓版
详情
思尔健康v3.1.42安卓版
详情
云上钢琴v4.0.3安卓版
详情
乐听头条v3.3.3安卓版
详情