<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>计算机</title> <style> *{ margin: 0px; padding: 0px; } .div1{ width: 222px; height:270px; background: #F8F8F8; margin: 100px auto; border: 1px solid #9acfea; } .div2{ width:200px; height:35px; background: #ffffff; margin:10px; text-align: right; line-height:35px; padding-right:5px; font-size: 18px; } table{ margin: 10px; } td { box-sizing: border-box; border: solid 3px rgba(0,0,0,0); background: #F0F0F0; } td:visited{ background:#2aabd2; } button{ width: 100%; height: 100%; } #result{ text-align: right; } </style> </head> <body> <div class="div1"> <div class="div2"><input type="text" id="result" style="border: solid 0px white"></div> <div > <table border="0" width="200px" height="200px"> <tr><td colspan="2"><button onclick="rem()">C</button></td><td ><button onclick="del()">←</button></td><td ><button onclick="b(this)" value="+">+</button></td></tr> <tr><td><button id="a7" onclick="b(this)" value="7">7</button></td><td><button id="a8" onclick="b(this)" value="8">8</button></td><td><button id="a9" onclick="b(this)" value="9">9</button></td><td ><button onclick="b(this)" value="-">-</button></td></tr> <tr><td><button id="a4" onclick="b(this)" value="4">4</button></td><td><button id="a5" onclick="b(this)" value="5">5</button></td><td><button id="a6" onclick="b(this)" value="6">6</button></td><td ><button onclick="b(this)" value="*">×</button></td></tr> <tr><td><button id="a1" onclick="b(this)" value="1">1</button></td><td><button id="a2" onclick="b(this)" value="2">2</button></td><td><button id="a3" onclick="b(this)" value="3">3</button></td><td ><button onclick="b(this)" value="/">÷</button></td></tr> <tr><td><button id="a0" onclick="b(this)" value="0">0</button></td><td><button onclick="b(this)" value=".">.</button></td><td colspan="2"><button id="bt" onclick="op()">=</button></td></tr> </table> </div> </div> <script> var str; function b(elelm) { str=document.getElementById("result"); str.value=str.value+elelm.value; } function op() { var pat1=/[-]?[0-9]*\.?[0-9]+/; var pat2=/\d[\+\-\*/][-]?[0-9]*\.?[0-9]+/; var pat3=/[+/-][0-9]*\.?[0-9]+/; var pat6=/[*/\/][0-9]*\.?[0-9]+/; var pat4=/\d[\+\-\*/]/; var pat5=/[\+\-\*/]/; var pat7=/[\+\-\*/][\+\*/]/; var pat8=/[\+\-\*/][\-]/; var pat9=/[\+\-\*/][\-][0-9]*[\.]?[0-9]+/; var p1=pat5.exec(pat4.exec(str.value));//运算符 var p2=pat7.exec(str.value); var nos2=str.value.search(pat7); var nos3=str.value.search(pat8); if (nos2!==-1){ alert("输入有误请重新输入!"); str.value = ""; return; }else { //第二个数为负数的情况 if (nos3!==-1){ if (p1[0]==="+" || p1[0]==="-"){ var a1=pat1.exec(str.value);//第一个数字 var a2=pat9.exec(str.value);//第一个数字的最后一位、运算符和第二个数字 var a3=pat3.exec(a2);//第二个数字 str.value=((10*parseFloat(a1))+10*parseFloat(a3))/10; }else { if (p1[0]==="*" || p1[0]==="/"){ var a1=pat1.exec(str.value);//第一个数字 var a2=pat9.exec(str.value);//第一个数字的最后一位、运算符和第二个数字 var a3=pat1.exec(a2);//第二个数字 if (p1[0]==="*"){ str.value=(1000*parseFloat(a1)*(1000*parseFloat(a3)))/1000000; }else{ str.value=(1000*parseFloat(a1)/(1000*parseFloat(a3))); } } } }else{ if (p1[0]==="+" || p1[0]==="-"){ var a1=pat1.exec(str.value);//第一个数字 var a2=pat2.exec(str.value);//第一个数字的最后一位、运算符和第二个数字 var a3=pat3.exec(a2);//第二个数字 str.value=((1000*parseFloat(a1))+1000*parseFloat(a3))/1000; }else { if (p1[0]==="*" || p1[0]==="/"){ var a1=pat1.exec(str.value);//第一个数字 var a2=pat6.exec(str.value);//第一个数字的最后一位、运算符和第二个数字 var a3=pat1.exec(a2);//第二个数字 if (p1[0]==="*"){ str.value=(1000*parseFloat(a1)*(1000*parseFloat(a3)))/1000000; }else{ if (a3==0){ str.value="除数不能为0"; return; } str.value=(1000*parseFloat(a1)/(1000*parseFloat(a3))); } } } } } } function del() { str.value = str.value.replace(/.$/,''); } function rem() { str.value = ""; } </script> </body> </html>