详解用javascript写一个简单计算器(二)

2025-06-27 03:27:37

1、var results="";var calresults=""; function calculater(){ if (event.srcElement.innerText=="=") { return; } results+=event.srcElement.innerText; display.innerText=results; } function resultscalcaulte(){ calresults=eval(results); display.innerText=calresults; }这是(一)篇的js代码,非常简单我们需要增加的功能有1.c键的清除功能2.判断算式是否合理3.多运算符号输入处理4.+/-相反数要求的功能5.按了等号运算后得到的结果继续运算

2、1.c键的清除功能,在calculater()里加入如下代码if (event.srcElement.innerText=="c") { results=""; display.innerText="0"; return; }判断如果点击了c的单元格,使results置空,display显示“0”

详解用javascript写一个简单计算器(二)详解用javascript写一个简单计算器(二)

6、3.多运算符号输入处理,例如如果不小心双击了加号,这样多出一个加号,就要重新输入了,我们可以设置如果上一个点击是运算符号,那下一个显示就不能是运算符号。为此我们要设置多一个全局变量存储上一个点击的值var lastkey="";增加一个正则运算判断是不是运算符号var re3=/(\+|-|\*|\/)/;再在calculater()里加入if(lastkey.match(re3)&&event.srcElement.innerText.match(re3)){ return; }这样多运算符号输入处理得到了优化处理

7、4.+/-螽啸镥释相反数要求的功能,在calculater()里加入if (event.srcElement.innerText=="+/-"&&results!="") { results = "-"+"("+results+")"; display.innerText=results; return; }就把现有数字或算式加上括号,再在前面加负号当然我们可以继续优化一下,改按了一下+/-键,再按一下+/-键就取消添加括号与负号,再按一下就又添加括号与负号,为此要多加俩个全局变量flg和results2,代码变为 if (event.srcElement.innerText=="+/-"&&results!="") { if (flg==-1) { results=String(results2); display.innerText=results; flg=-flg; return; } results2=results; results = "-"+"("+results+")"; flg=-flg; display.innerText=results; return; }String(results2),这里强制类型转换的原因是results2有可能会是数字类型而非字母类型,因为.match()要求必须results必须要是string类型,所以就进行一下强制类型转换

详解用javascript写一个简单计算器(二)

8、5.按了等号运算后得到的结果继续运算,在calculater()里加入if(lastkey=="="&&event.srcElement.innerText.match(re3)){ results=calresults; }在resultscalcaulte(),加入lastkey="=";简单来说就是运算后,检测再输入的键是不是运算符号,如果是,就用结果继续运算,如果不是就重新开始新算式

9、这样这个简单的计算器茧盯璜阝就具有实用功能,下面附上上面完整的js代码 var results=""; var results2=""; var calresults=""; var lastkey=""; var flg=1; var re1=/^[\*|\/].+/; var re2=/.+[\*|\/]$/; var re3=/(\+|-|\*|\/)/; var re4=/.+[\+|-|\*|\/]{1,99}.+/ var re5=/\d.+/; function calculater () { if (event.srcElement.innerText=="=") { return; } if (event.srcElement.innerText=="c") { results=""; display.innerText="0"; return; } if (event.srcElement.id=="display") { return; } if (results.match(re1)) { display.innerText="输入错误"; results=""; return; } if(lastkey.match(re3)&&event.srcElement.innerText.match(re3)){ return; } if(lastkey=="="&&event.srcElement.innerText.match(re3)){ results=calresults; } if (event.srcElement.innerText=="+/-"&&results!="") { if (flg==-1) { results=String(results2); display.innerText=results; flg=-flg; return; } results2=results; results = "-"+"("+results+")"; flg=-flg; display.innerText=results; return; } results+=event.srcElement.innerText; lastkey=event.srcElement.innerText; display.innerText=results; } function resultscalcaulte(){ if (results.match(re1)||results.match(re2)) { display.innerText="输入错误"; results=""; return; } calresults=eval(results); display.innerText=calresults; lastkey="="; results=""; }只要理解上面内容,你还可以继续完善这个简单的计算,修改一下键的功能,这里就到此结束了。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢