毛子计算器

  1 <!DOCTYPE html>
  2 
  3 <html>
  4     <head>
  5         <meta charset="UTF-8">
  6         <title>calculator</title>
  7         <style type="text/css"> 
  8         
  9         .TheBigestBox {
 10             background-color:gray;
 11             color:white;
 12             width:500px;
 13             height:500px;
 14             margin: 0px auto;
 15             line-height:40px;
 16             font-size:20px;
 17         }
 18         .resultline {
 19             background-color:white;
 20             color:red;
 21             width:500px;
 22             height:80px;
 23             
 24         }
 25         .behandResultline {
 26             height:40px;
 27             text-align:center;
 28             color: black;
 29             background-color: gray;
 30             width: 500px;
 31             font-family: "Consolas";
 32             font-size:16px;
 33         }
 34         .lineSubElement {
 35             
 36             height:84px;
 37             width: 500px;
 38             background-color: white;
 39         }
 40         .littleButton {
 41             text-align: center;
 42             color: black;
 43             font-size:40px;
 44             line-height:80px;
 45             height:80px;
 46             width: 125px;
 47             float: left;
 48         }
 49         .divtest {
 50             width:496px;
 51             height:80px;
 52             line-height:80px;
 53             font-size:40px;
 54             color: red;
 55             border:2px solid gray;
 56             text-align:center;
 57         }
 58         button{background-color:gray}
 59         button:hover {background-color:blue}
 60         </style>
 61         <script type="text/javascript">
 62 
 63                     //0 for init
 64                     //1 for input an 0 on the top of expreession
 65                     //2 for input other number
 66                     //3 for +,-, *, / operator
 67                     //4 for put .
 68                     //5 for little number
 69         
 70             var flagNo = 0;
 71             var flagArray = new Array();
 72             var size = 1;
 73             flagArray[0] = flagNo;
 74             
 75             
 76             function addstack(flagTemp) {
 77                 flagArray[size] = flagTemp;
 78                 size++;
 79                 //alert("push:" + flagTemp.toString());
 80             }
 81             function popstack() {
 82                 if (size == 1) {
 83                     //alert("pop:"+size.toString());
 84                     return 0;
 85                 } else if (size >= 2){
 86                     size--;
 87                     //alert("pop:" + flagArray[size - 1].toString());
 88                     return flagArray[size - 1];
 89                 }
 90             }
 91             function checkincludep(s) {
 92                 for (i = 0; i < s.length; i++)  {
 93                     if (s.charAt(i) == '.') {
 94                         return 1;
 95                     }
 96                 }
 97                 return 0;
 98             }
 99             function cal() {
100                 elementvar = document.getElementById('textinput');
101                 try {
102                     sum = eval(elementvar.innerText);
103                     elementvar.innerText = sum;
104                     analyzeAllExpression(elementvar.innerText);
105                     return sum;
106                 } catch (exception) {
107                     alert("非法表达式");
108                 }
109                 
110             }
111             function calcal(obj){
112                 try {
113                     sum = eval(obj);
114                     
115                     return sum;
116                 } catch (exception) {
117                     alert("非法表达式");
118                 }
119                 
120             }
121             function analyzeAllExpression(exprssStr) {
122                 flagNo = 0;
123                 size = 1;
124                 for (i = 0; i < exprssStr.length; i++) {
125                     switch (exprssStr.charAt(i)) {
126                         case '0' :
127                             switch (flagNo) {
128                             case 0: 
129                                 flagNo = 1;
130                                 addstack(flagNo);
131                                 break;
132                             case 2:
133                                 flagNo = 2;
134                                 addstack(flagNo);
135                                 break;
136                             case 3 :
137                                 flagNo = 1;
138                                 addstack(flagNo);
139                                 break;
140                             case 4 :
141                                 flagNo = 5;
142                                 addstack(flagNo);
143                                 break;
144                             case 5 :
145                                 flagNo = 5;
146                                 addstack(flagNo);
147                                 break;
148                             
149                             }
150                             break;
151                         case '1' :
152                         case '2' :
153                         case '3' :
154                         case '4' :
155                         case '5' :
156                         case '6' :
157                         case '7' :
158                         case '8' :
159                         case '9' :
160                             switch (flagNo) {
161                             case 0 :
162                                 flagNo = 2;
163                                 addstack(flagNo);
164                                 break;
165                             case 2 :
166                                 flagNo = 2;
167                                 addstack(flagNo);
168                                 break;
169                             case 3 :
170                                 flagNo = 2;
171                                 addstack(flagNo);
172                                 break;
173                             case 4 :
174                                 flagNo = 5;
175                                 addstack(flagNo);
176                                 break;
177                             case 5 :
178                                 flagNo = 5;
179                                 addstack(flagNo);
180                                 break
181                            }
182                            break;
183                         case '+' :
184                         case '-' :
185                         case '*' :
186                         case '/' :
187                         case '%' :
188                             switch (flagNo) {
189                             case 0 : if (exprssStr.charAt(i) == '+' || exprssStr.charAt(i) == '-'){
190                                     flagNo = 3;
191                                     addstack(flagNo);
192                                 } else  {
193                                     alert("exception hapened");
194                                 }
195                                 break;
196                             case 1 :
197                                 flagNo = 3;
198                                 addstack(flagNo);
199                                 break;
200                             case 2 :
201                                 flagNo = 3;
202                                 addstack(flagNo);
203                                 break;
204                             case 3 :
205                                 alert("exception hapened");
206                                 break;
207                             case 4 :
208                                 alert("exception hapened");
209                                 break;
210                             case 5 :
211                                 flagNo = 3;
212                                 addstack(flagNo);
213                                 break;
214                             }
215                             break;
216                         case '.' : 
217                             switch (flagNo) {
218                             case 0 :
219                                 alert("exception hapened");
220                                 break;
221                             case 1 : 
222                                 flagNo = 4;
223                                 addstack(flagNo);
224                                 break;
225                             case 2 :
226                                 flagNo = 4;
227                                 addstack(flagNo);
228                                 break;
229                             case 3 :
230                                 alert("exception hapened");
231                                 break;
232                             case 4 :
233                                 alert("exception hapened");
234                                 break;
235                             case 5:
236                                 alert("exception hapened");
237                                 break;
238                             }
239                             break;
240                         }
241                     }
242             }
243             function back() {
244                 elementvar = document.getElementById('textinput');
245                 testest = elementvar.innerText;
246                 try {
247                     if (flagNo == 1 || flagNo == 2 || flagNo == 5) {
248                         testest = '-' + '(' + testest + ')'
249                         sum = calcal(testest);
250                         
251                         
252                         elementvar.innerText = sum;
253                         analyzeAllExpression(elementvar.innerText);
254                     } else {
255                           return;
256                      }
257                 } catch (exception) {
258                     alert(exception);
259                 }
260             }
261             function clear() {
262                 elementvar = document.getElementById('textinput');
263                 elementvar.innerText = '';
264             }
265             function keyList(typeNo) {
266                 elementvar = document.getElementById('textinput');
267                 switch(typeNo) {
268                 case '0' : 
269                     switch (flagNo) {
270                     case 0: 
271                         flagNo = 1;
272                         addstack(flagNo);
273                         break;
274                     case 1:
275                         alert("首元素为0时候仅能输入小数点或者删除0的首元素");
276                         return;
277                         break;
278                     case 2:
279                         flagNo = 2;
280                         addstack(flagNo);
281                         break;
282                     case 3 :
283                         flagNo = 1;
284                         addstack(flagNo);
285                         break;
286                     case 4 :
287                         flagNo = 5;
288                         addstack(flagNo);
289                         break;
290                     case 5 :
291                         flagNo = 5;
292                         addstack(flagNo);
293                         break;
294                     
295                     }
296                     elementvar.innerText = elementvar.innerText + typeNo;
297                 
298                     break;
299                 case '1' :
300                 case '2' :
301                 case '3' :
302                 case '4' :
303                 case '5' :
304                 case '6' :
305                 case '7' :
306                 case '8' :
307                 case '9' : 
308                     switch (flagNo) {
309                     case 0 :
310                         flagNo = 2;
311                         addstack(flagNo);
312                         break;
313                         
314                     case 1 :
315                         alert("首元素为0时候仅能输入小数点或者删除0的首元素");
316                         return;
317                     case 2 :
318                         flagNo = 2;
319                         addstack(flagNo);
320                         break;
321                     case 3 :
322                         flagNo = 2;
323                         addstack(flagNo);
324                         break;
325                     case 4 :
326                         flagNo = 5;
327                         addstack(flagNo);
328                         break;
329                     case 5 :
330                         flagNo = 5;
331                         addstack(flagNo);
332                         break
333                    }
334                    elementvar.innerText = elementvar.innerText + typeNo;
335                 
336                     break;
337                 
338 
339                             
340                 case '+' :
341                 case '-' :
342                 case '*' :
343                 case '/' :
344                 case '%' :
345                     switch (flagNo) {
346                     case 0 : if (typeNo == '+' || typeNo == '-'){
347                             flagNo = 3;
348                             addstack(flagNo);
349                         } else  {
350                             return;
351                         }
352                     case 1 :
353                         flagNo = 3;
354                         addstack(flagNo);
355                         break;
356                     case 2 :
357                         flagNo = 3;
358                         addstack(flagNo);
359                         break;
360                     case 3 :
361                         return;
362                     case 4 :
363                         return;
364                     case 5 :
365                         flagNo = 3;
366                         addstack(flagNo);
367                         break;
368                         
369                     }
370                     elementvar.innerText = elementvar.innerText + typeNo;
371 
372                 break;
373                 case '.' : 
374                     
375                     switch (flagNo) {
376                     case 0 :
377                         return;
378                     case 1 : 
379                         flagNo = 4;
380                         addstack(flagNo);
381                         break;
382                     case 2 :
383                         flagNo = 4;
384                         addstack(flagNo);
385                         break;
386                     case 3 :
387                         return;
388                     case 4 :
389                         return;
390                     case 5:
391                         return;
392                     }
393                     elementvar.innerText = elementvar.innerText + typeNo;
394 
395                     break;
396                 case 'AC': {
397                     flagNo = 0;
398                     size = 1;
399                     elementvar.innerText = "";
400                 }
401 
402                 case '=': if (flagNo == 1 || flagNo == 2 || flagNo == 5) {
403                                 cal();
404                           } else {
405                                 return;
406                           }
407                           break;
408 
409                 case '+/-': 
410                         back();
411                         
412                         break;
413                 case 'DEL' : {
414                         flagNo = popstack();
415                         if (size >= 1) {
416                             elementvar.innerText = elementvar.innerText.substr(0, elementvar.innerText.length - 1);
417                         }
418                     }
419                     break;
420                 }
421                 
422             }
423         </script>
424     </head>
425     
426     <body>
427         <div class="TheBigestBox">
428             <div class="behandResultline">小毛计算器</div>
429             <div class="resultline">
430                 <div class="divtest" name="lname" id="textinput"></div>
431             </div>
432             <div class="lineSubElement">
433                 
434                 <button class="littleButton" onclick="keyList('AC')">AC</button>
435                 <button class="littleButton" onclick="keyList('+/-')">+/-</button>
436                 <button class="littleButton" onclick="keyList('%')">%</button>
437                 <button class="littleButton" onclick="keyList('/')">÷</button>
438                 
439             </div>
440             <div class="lineSubElement">
441                 <button class="littleButton" onclick="keyList('7')">7</button>
442                 <button class="littleButton" onclick="keyList('8')">8</button>
443                 <button class="littleButton" onclick="keyList('9')">9</button>
444                 <button class="littleButton" onclick="keyList('*')">*</button>
445             </div>
446             
447             <div class="lineSubElement">
448                 <button class="littleButton" onclick="keyList('4')">4</button>
449                 <button class="littleButton" onclick="keyList('5')">5</button>
450                 <button class="littleButton" onclick="keyList('6')">6</button>
451                 <button class="littleButton" onclick="keyList('-')">-</button>
452             </div>
453             <div class="lineSubElement">
454                 <button class="littleButton" onclick="keyList('1')">1</button>
455                 <button class="littleButton" onclick="keyList('2')">2</button>
456                 <button class="littleButton" onclick="keyList('3')">3</button>
457                 <button class="littleButton" onclick="keyList('+')">+</button>
458             </div>
459             <div class="lineSubElement">
460                 <button class="littleButton" onclick="keyList('0')">0</button>
461                 <button class="littleButton" onclick="keyList('DEL')">DEL</button>
462                 <button class="littleButton" onclick="keyList('.')">.</button>
463                 <button class="littleButton" onclick="keyList('=')">=</button>
464             </div>
465        </div>
466     
467     </body>
468 </html>

 

posted @ 2022-07-08 15:31  maojun1998  阅读(19)  评论(0编辑  收藏  举报