老师,看看我这个计算器可以怎么优化一下吗?
<!DOCTYPE html> <html> <head> <title>简易计算器</title> <link rel="stylesheet" type="text/css" href="index.css"> <script type="text/javascript" src="index.js"></script> </head> <body onload="init()"> <div class="div_out" id="div1"> <div class="div_in" id="div2"> <input type="text" name="text1" id="text1"/> </div> <div class="div_in" id="div3"> <input type="text" name="text2" id="text2"/> </div> <div class="div_in" id="div4"> <input type="button" name="button" value="C" id="C" /> <input type="button" name="button" value="( )" id="( )" /> <input type="button" name="button" value="⬅" id="⬅" /> <input type="button" name="button" value="/" id="÷" /> <input type="button" name="button" value="7" id="7" /> <input type="button" name="button" value="8" id="8" /> <input type="button" name="button" value="9" id="9" /> <input type="button" name="button" value="*" id="×" /> <input type="button" name="button" value="4" id="4" /> <input type="button" name="button" value="5" id="5" /> <input type="button" name="button" value="6" id="6" /> <input type="button" name="button" value="-" id="-" /> <input type="button" name="button" value="1" id="1" /> <input type="button" name="button" value="2" id="2" /> <input type="button" name="button" value="3" id="3" /> <input type="button" name="button" value="+" id="+" /> <input type="button" name="button" value="+/-" id="+/-" /> <input type="button" name="button" value="0" id="0" /> <input type="button" name="button" value="." id="." /> <input type="button" name="button" value="=" id="=" /> </div> </div> </body> </html>
*{ margin:0px; padding:0px; border:0px; } div{ left:0px; right:0px; margin:auto; border:1px solid grey; } .div_out{ width:300px; height:450px; top:50px; position:relative; } .div_in{ width:295px; } #div2{ height: 40px; } #div3{ height:40px; } input[type="text"]{ width: 295px; text-align:right; padding-right:10px; box-sizing:border-box; } #text1{ line-height:39px; font-size:25px; color:#33CCFF; } #text2{ line-height:39px; font-size:35px; } input[type="button"]{ width:60px; height:60px; margin:5px; font-size:20px; } input[type="button"]:hover{ background-color:#33CCFF; border:1px solid grey; }
//初始化 function init(){ var text1=document.getElementById("text1"); text1.value=""; var text2=document.getElementById("text2"); text2.value=0; key_onclick(); var key_value; } //为每个按键添加点击事件, function key_onclick(){ var buttons=document.getElementsByName("button"); for(var i=0;i<buttons.length;i++){ buttons[i].onclick=function(){ judge(this.value); //调用函数(该函数根据botton值进行判断如何处理) } } } var flag;//用于标记是否按下“=”符号,"false"="未按下","true"="已按下" function judge(key_value){ if(flag==true){ text1.value=""; //“=”符号已按下,再次输入时将清空text1文本框以便显示接下来输入的值 flag=false; } if(!isNaN(key_value)){ text1.value=text1.value+key_value; calculate(); //调用函数(该函数实现计算功能) }else if(isNaN(key_value)){ switch(key_value){ case "+": case "-": case "*": case "/":judgeLastIsMathematicalOperator(); //调用函数(该函数将对同时输入多个运算符的情况进行处理) text1.value=text1.value+key_value; break; case ".":key_value=judgeLastIsNumber(); //调用函数(该函数将对小数点如何输入进行处理) text1.value=text1.value+key_value; break; case "=":text1.value=text2.value; text2.value=""; flag=true; break; case "C":text1.value=""; text2.value="0"; break; case "⬅":deleteStr(); //调用函数(该函数将删除计算式最后一个字符) calculate(); //调用函数(该函数实现计算功能) break; case "( )":alert("该功能正在完善中!"); break; case "+/-":alert("该功能正在完善中!"); break; } } } //该函数将对同时输入多个运算符的情况进行处理 function judgeLastIsMathematicalOperator(){ var length=text1.value.length; var lastStr=text1.value.substr(-1,); if(lastStr=="+"||lastStr=="-"||lastStr=="*"||lastStr=="/"){ text1.value=text1.value.substr(0,length-1); } } //该函数将对小数点如何输入进行处理 function judgeLastIsNumber(){ var length=text1.value.length; //text1的value值长度 var lastStr=text1.value.substr(-1,); //获取text1的value值最后一个字符 if(lastStr==""){ return "0." //如果lastStr为空(最后一个字符为空,即此前无输入),则返回“0.” }else{ if(isNaN(lastStr)){ return "0." //如果lastStr不为空,且最后一个字符不为数字,返回0. }else{ var index=text1.value.lastIndexOf("."); //获取最后一个"."的索引值,若未找到则返回“-1” if(index!=-1){ var pointToLast=text1.value.substr(index+1,); //获取"."到最后一个字符的字符串 if(!isNaN(pointToLast)){ return ""; } }else{ return "."; } } } } //该函数将删除计算式最后一个字符 function deleteStr(){ var length=text1.value.length; //text1的value值长度 text1.value=text1.value.substr(0,length-1); } //该函数实现计算功能 function calculate(){ if (text1.value!="") { var lastStr=text1.value.substr(-1,); if(!isNaN(lastStr)){ text2.value=eval(text1.value); }else{ text2.value=""; } }else text2.value="0"; }
上午干到下午,终于完成到现在这个样子。。。但是这个括号以及正负号的功能没有做 ,感觉这两个有点麻烦,希望老师也能说一下这两个功能实现的方法。。。。
16
收起
正在回答
2回答
同学你好,同学可以参考如下思路:
1、()括号实现如下:
a. 在js文件中定义一个全局变量并赋值为true,如var flag=true;
b. 当点击()按钮时,先判断flag的值,如果flag为true,显示出(左括号,如果flag为false,显示出右括号)。例如(2+10)-(3+2)
同学也可以修改html代码,将(左括号和)右括号分别作为一个按钮,这样用户就可以自己选择了。
2、+/-按钮是取当前结果的相反数,实现如下:
a. 当点击+/-时,在第一行表达式最前面和最后面加上左括号和右括号,并在前面添加-负号,例如:-(5+3)。
b. 将表达式的结果显示在第二行中。
相似问题
登录后可查看更多问答,登录/注册
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星