基于原生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>

浙公网安备 33010602011771号