基于原生JS的简易计算器

以下代码仅可进行加减乘除运算

 

 

 

js代码:

 1 <script type="text/javascript">
 2             var result =new Array; //用于存储拆解后的字符串以及运算结果
 3             var cache;  //暂时存储部分运算结果
 4             function calculation(){
 5                 //将多位数(字符串单个字符)转化为整体  "5""6" ==> "56"
 6                 for(var i = 1; i < result.length; i++){
 7                     if(result[i] != "+" && result[i] != "-" && result[i] != "*" && result[i] != "/"){
 8                         if(result[i-1] != "+" && result[i-1] != "-" && result[i-1] != "*" && result[i-1] != "/"){
 9                             cache = result[i-1] + result[i];  //合并多位数 "5""6" ==> "56"
10                             result[i-1] = cache;  //将整理过的数放入数组中
11                             result.splice(i,1);  //整理已经整合过的数
12                             calculation();  //再次调用自身以便检查是否有遗漏
13                         }
14                     }
15                 }
16                 //乘法运算
17                 for(var i = 0;i < result.length;i++){
18                     if(result[i] === "*"){
19                         cache = result[i-1] * result[i+1];
20                         result[i-1] = cache;
21                         result.splice(i,2);  //删掉数组中已经运算过的数与运算符号
22                         calculation();
23                     }
24                 }
25                 //除法运算
26                 for(var i = 0;i < result.length;i++){
27                     if(result[i] === "/"){
28                         cache = result[i-1] / result[i+1];
29                         result[i-1] = cache;
30                         result.splice(i,2);
31                         calculation();
32                     }
33                 }
34                 //加法运算
35                 for(var i = 0; i < result.length;i++){
36                     if(result[i] === "+"){
37                         cache = result[i-1] *1 + result[i+1] *1;  //乘 1 是为了在加减法中将字符型转为数值型运算,否则将会是级联
38                         result[i-1] = cache;
39                         result.splice(i,2);
40                         calculation();
41                     }
42                 }
43                 //减法运算
44                 for(var i = 0; i < result.length;i++){
45                     if(result[i] === "-"){
46                         cache = result[i-1] * 1 - result[i+1] * 1;
47                         result[i-1] = cache;
48                         result.splice(i,2);
49                         calculation();
50                     }
51                 }
52                 
53             }
54             function evaluation(){
55                 //获取输入框中的字符串(要运算的数据)
56                 var inputValue = document.getElementById("input_1").value;
57                 //将输入框中的值(字符串)拆解并存入数组中
58                 for(var i = 0;i < inputValue.length;i++){
59                     result.push(inputValue.charAt(i));
60                 }
61                 calculation(); //调用运算方法
62                 result[0] = result[0].toFixed(3); //保留3位小数
63                 document.getElementById("box_1").innerHTML = inputValue + "=" + result[0];
64                 result = [];  //归零
65             }
66             
67         </script>

html代码:

1 <h3>在输入框中输入要运算的数据,如:1+12*1/2-3</h3>
2         <input type="text" id="input_1" value="" />
3         <button type="button" onclick="evaluation()">求值</button>
4         <div class="box" id="box_1"></div>

 

posted @ 2020-10-16 11:32  犹枕南柯  阅读(215)  评论(0)    收藏  举报