收藏 分销(赏)

JavaScript计算器(包含累计与显示功能).doc

上传人:s4****5z 文档编号:8803650 上传时间:2025-03-02 格式:DOC 页数:13 大小:147KB 下载积分:10 金币
下载 相关 举报
JavaScript计算器(包含累计与显示功能).doc_第1页
第1页 / 共13页
JavaScript计算器(包含累计与显示功能).doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
计算器的逻辑对于新手而言比较复杂!新手学习JavaScript,很多代码重用,有很强的改进空间,不过这很适合新手,注释比较全面(基本上每句代码后都有注释); 首先是js部分(3.js) var num=0,result=0,numshow="0"; var operate=0; //判断输入状态的标志 var calcul=0; //判断计算状态的标志 var quit=0; //防止重复按键的标志 var zero_pd; //"0"判断防止重复按"0" var end_num = "undefined"; //保留最后一个出现的值 var ljs_num; //累加数 var fh_str; //最后的 符号 //数字的输入 function command(num){ var str=String(document.calculator.numScreen.value); //获得当前显示数据 var str1=String(document.calculator.onshow.value); str=(str!="0") ? ((operate==0) ? str : "") : ""; //如果当前值不是"0",且状态为0,则返回当前值,否则返回空值; str=str + String(num); //给当前值追加字符 document.calculator.numScreen.value=str; //刷新显示 operate=0; //重置输入状态 quit=0; //重置防止重复按键的标志 document.getElementById("textShow").value += num; //写入显示框textShow splitLastNum(document.calculator.onshow.value); //用于更新累加数(ljs_num) } //双"00"的输入 function dzero(){ var str1=String(document.calculator.onshow.value); //获取显示框的值 var str=String(document.calculator.numScreen.value); //获取当前(numshow)显示的值 str=(str!="0") ? ((operate==0) ? str + "00" : "0") : "0"; //如果当前值不是"0",且状态为0,则返回当str+"00",否则返回"0"; document.calculator.numScreen.value=str; //更新numshow的值 str=str+"00"; //刷新显示 operate=0; //重置操作 quit=0; //重置按键操作 if(str1 && typeof(str1)!="undefined" && str1!=0){ //判断显示栏是否有值 var array = str1.split(fh_str); //用最后保留的符号拆分成数组 if(array!=null && array.length > 0){ //取数组的最后一个子字符串 zero_pd= array[array.length-1]; var str3=zero_pd.split(""); //将子字符串拆分成字符 for(i=0;i<str3.length;i++){ //遍历字符 var type= "^-?\\d+$"; //定义类型type,值为判断是否为整数的正则表达式 var re = new RegExp(type); //匹配字符串 if(str3[i]=="."||str3[i].match(re)!=null){ //判断str3中是否存在数字或者"." document.getElementById("textShow").value += "00"; //文本框(textshow)中加入"00" splitLastNum(document.calculator.onshow.value); //将值加入累加数并刷新 break; } } } } } //"0"输入 function zero(){ var str1=String(document.calculator.onshow.value); //获取文本框字符串 var str=String(document.calculator.numScreen.value); //获取numshow的值 str=(str!="0") ? ((operate==0) ? str + "0" : "0") : "0"; //如果当前值不是"0",且状态为0,则返回当str+"00",否则返回"0"; document.calculator.numScreen.value=str; //刷新值 str=str+"0"; operate=0; //重置操作 quit=0; if(str1 && typeof(str1)!="undefined"){ //判断是否显示框有值 //if(str1 && typeof(str1)!="undefined" && str1!=0){ var array = str1.split(fh_str); //获取最后保留的符号 if(array!=null && array.length > 0){ zero_pd= array[array.length-1]; //获取最后一个子字符串 var str3=zero_pd.split(""); //拆分子字符串 for(i=0;i<str3.length;i++){ //进行遍历 var type= "^-?\\d+$"; //正则判断是不是数字 var re = new RegExp(type); if(str3[i]=="."||str3[i].match(re)!=null){ //是数字和"." document.getElementById("textShow").value += "0"; //textshow+"0" splitLastNum(document.calculator.onshow.value); break; } } } } } //"."输入 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; //重置操作 var str1=String(document.calculator.onshow.value); //获取显示框的值 if(str1 && typeof(str1)!="undefined" && str1!==""){ //判断显示框是否有值 var str2=str1.split(""); //将str1拆分为若干字符 var str3=str2[str2.length-1]; //获取最后一个字符 var type= "^-?\\d+$"; //数字的正则表达式 var re = new RegExp(type); //匹配 if(str3.match(re)!=null){ //匹配结果不为空 document.getElementById("textShow").value += "."; //显示框输入"." }else{ document.getElementById("textShow").value += "0."; //显示框输入"0." } }else if(str1==""){ //str1为空 document.getElementById("textShow").value += "0."; //显示框输入"0." } } //退格符号 function del(){ var str1=String(document.calculator.onshow.value); //获取显示框的值 var str2=str1.substr(str1.length-1,1); //取出显示框最后一个字符 // var type = /^[0-9]*[1-9][0-9]*$/; //正整数的正则表达式 var type= "^-?\\d+$"; //整数的正则表达式 var re = new RegExp(type); //匹配 if(str2.match(re)!=null){ //匹配值不为空 var str=String(document.calculator.numScreen.value); //获取numshow的值 str=(str!="0") ? str : ""; //三目运算, str=str.substr(0,str.length-1); //获取原字符串除最后一个字符的所有字符 str=(str!="") ? str : "0"; //三目运算 str1=str1.substr(0,str1.length-1); //获取原字符串除最后一位的所有字符 document.calculator.numScreen.value=str; //更新显示 document.calculator.onshow.value=str1; }else{ document.getElementById("note").innerHTML="该操作不能退格!"; setTimeout(clearnote,4000) //提示 } } //清除数据(重置所有值与操作) function clearscreen(){ num=0; result=0; numshow="0"; ljs_num=0; fh_str=""; end_num="undefined"; document.calculator.numScreen.value="0"; document.calculator.onshow.value=""; } //加法运算 function plus(){ if(yn()){ calculate(); //调用计算函数 } operate=1; //更改输入状态 calcul=1; //更改计算状态为加 fh_str = "+"; //符号 document.getElementById("textShow").value += "+"; //显示框添加"+" } //减法运算 function minus(){ if(yn()){ calculate(); //调用计算函数 } fh_str = "-"; operate=1; calcul=2; document.getElementById("textShow").value += "-"; } //乘法运算 function times(){ //乘法 if(yn()){ calculate(); //调用计算函数 } fh_str = "*"; operate=1; calcul=3; document.getElementById("textShow").value += "*"; } //除法运算 function divide(){ //除法 if(yn()){ calculate(); //调用计算函数 } fh_str = "/";; operate=1; calcul=4; document.getElementById("textShow").value += "/"; } //求余运算 function persent(){ //求余 if(yn()){ calculate(); //调用计算函数 } fh_str = "%"; operate=1; calcul=5; document.getElementById("textShow").value += "%"; } //等号 function equal(){ calculate(); //等于 operate=1; end_num=num; num=0; result=0; numshow="0"; document.calculator.onshow.value=""; } //计算 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{ if(end_num !="undefined"){ result=end_num; }else{ result=numshow; } if(ljs_num && typeof(ljs_num)!="undefined"){ // if(ljs_num && typeof(ljs_num)!="undefined" && ljs_num!=0){ switch(fh_str){ //判断要输入状态 case "+":result=Number(ljs_num)+end_num;break; //计算"+" case "-":result=end_num-Number(ljs_num);break; //计算"-" case "*":result=Number(ljs_num)*end_num;break; case "/":if(numshow!=0){result=end_num/Number(ljs_num);}else{document.getElementById("note").innerHTML="被除数不能为零!"; setTimeout(clearnote,4000)} break; case "%":document.getElementById("note").innerHTML="不能进行连续模运算!"; setTimeout(clearnote,4000) break; } } } numshow=String(result); document.calculator.numScreen.value=numshow; num=result; //存储当前值 } //提示 function clearnote(){ document.getElementById("note").innerHTML=""; } //判断符号输入 function yn(){ var str1=String(document.calculator.onshow.value); //获取显示框的值 var str2=str1.substr(str1.length-1); //取最后一位字符 var type= "^-?\\d+$"; //整数的正则表达式 var re = new RegExp(type); //匹配 if(str2.match(re)!=null||str2=="."){ //匹配结果不为空或者为"." var quit=0; //重置数据 numshow="0"; ljs_num=0; fh_str=""; end_num="undefined"; if(str2=="."){ //若为"." str1=str1.substr(0,str1.length-1); //退格 document.calculator.onshow.value=str1; //更新显示框的值 } document.calculator.onshow.value=str1; //更新显示框的值 return true; }else if(str2==""){ //若为空 end_num=(end_num=="undefined")? 0:end_num; //三目运算给end_num赋值 document.calculator.onshow.value=end_num; //给显示框赋值 return false; } else{ str1=str1.substr(0,str1.length-1); //取除最后一位的所有字符串 document.calculator.onshow.value=str1; //赋值 return false; } } //累加数的确定 function splitLastNum(value){ if(value && typeof(value)!="undefined" && value!=0){ //判断显示框是否有值 var array = value.split(fh_str); //通过最后的符号拆分显示框字符串为数组 for(var i = 0; i < array.length; i++) { //若没有数组 if(array[i].length == 0) array.splice(i,1); } if(array!=null && array.length > 0){ //若有数组 if(array.length>1){ ljs_num = array[array.length - 1]; //取最后一个 }else{ var str1=String(document.calculator.onshow.value); //赋值给显示框 var str2=str1.charAt(0); //去最后一位字符 var type= "^-?\\d+$"; //整数的正则表达式 var re = new RegExp(type); if(str2.match(re)!=null){ //若匹配值不为空 ljs_num=0; }else{ ljs_num=end_num; } } } } } 其次是html部分(jsq.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>jsq.html</title> <style type="text/css"> body { font-size:24px; font-family:Arial, Georgia, "Times New Roman", Times, serif; color:#555; text-align:center; background-color:#FAFAD2; } h6{ margin:0; font-size:24px; } #calculator { width:480px; height:auto; overflow:hidden; margin:10px auto; border:#fff 2px solid; padding-bottom:20px; background-color:#ADD8E6; } #calculator div { clear:both; } #calculator ul{ padding:0; margin:10px 28px; border:#fff 1px solid; height:auto; overflow:hidden } #calculator li{ list-style:none; float:left; width:64px; height:64px; margin:10px; display:inline; line-height:64px; font-size:28px; background-color:#87CEFA; } #calculator li.tool{ background-color:#87CEFA; } #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:20px 30px 10px; } .screen{ width:400px; height:24px; line-height:24px; padding:8px; border:#e6e6e6 1px solid; border-bottom:#f2f2f2 1px solid; border-right:#f2f2f2 1px solid; margin:-1px auto; direction:ltr; text-align:right; font-size:32px; color:#999; } .screen1{ width:400px; height:24px; line-height:24px; padding:8px; border:#e6e6e6 1px solid; border-bottom:#f2f2f2 1px solid; border-right:#f2f2f2 1px solid; margin:2px auto; direction:ltr; text-align:right; font-size:32px; color:#999; } #calcu-foot{ text-align:left; padding:20px 30px 10px; height:auto; overflow:hidden; } span#note{ float:left; width:420px; height:auto; overflow:hidden; color:red; } span.welc
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服