用jQ實現一個簡易計算器


HTML和CSS結構:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <script src="jq.js"></script>
 7     <style>
 8     input[type="text"]{
 9         margin-bottom: 20px;
10         text-align: right;
11     }
12     </style>
13 </head>
14 <body>
15     <input type="text"><br>
16     <div class="number">
17         <input type="button" value="0">
18         <input type="button" value="1">
19         <input type="button" value="2">
20         <input type="button" value="3">
21         <input type="button" value="4">
22         <input type="button" value="5">
23         <input type="button" value="6">
24         <input type="button" value="7">
25         <input type="button" value="8">
26         <input type="button" value="9">
27         <input type="button" value=".">
28     </div>
29     <div class="char">
30         <input type="button" value="+">
31         <input type="button" value="-">
32         <input type="button" value="*">
33         <input type="button" value="/">
34     </div>
35     <div class="result">
36         <input type="button" value="=">
37     </div>
38     <div class="delete">
39         <input type="button" value="delete">
40     </div>
41     <script>
42         
43     </script>
44 </body>
45 </html>

下面來一步步實現計算器的功能

第一步:首先實現點擊數字不斷的顯示出來

    <script>
        //存取數字一的容器
        var num="";
        //給所有數字添加點擊事件
        $(".number input").click(function(){
            //獲取當前點擊的value值
            var value = $(this).val();
            //因為 value和num是字符串,加號在這里是連接字符串,然后存進變量num里面
                num = num+value;
            //把變量num在input里面輸出
                $("input[type='text']").val(num);
        })
    </script>

需要注意:

  • val()為input標簽專用的一個方法,能獲取input標簽的value值,括號里面傳入參數表示替換掉原來的值
  • 這里變量num需要放在函數外面,如果放在函數里面,每次點擊的時候又重新申明了num值為空字符串,達不到我們想要的效果,
  • $(this).val()獲取的是一個字符串
  • num在這里的作用相當於一個容易,新的值不斷的加上原來的值,並覆蓋掉舊的值

第二步:添加運算符事件

 1     <script>
 2         var num="";
 3         //聲明一個變量char,來存放運算符
 4         var char="";
 5         $(".number input").click(function(){
 6             var value = $(this).val();
 7                 num = num+value;
 8                 $("input[type='text']").val(num);
 9         })
10         //添加運算符點擊事件
11         $(".char input").click(function(){
12             //獲取當前點擊的運算符存進變量char中
13             char = $(this).val();
14             //在input框中輸出num+char
15             $("input[type='text']").val(num+char); 
16         })
17     </script>

第三步:顯示出數字1加上數字2

 1     <script>
 2         var num="";
 3         //申明變量num2,來存放數字2的值
 4         var num2="";
 5         var char="";
 6         $(".number input").click(function(){
 7             var value = $(this).val();
 8         //如果變量char等於空字符串,則存取數字1的值,否則開始存取數字2的值
 9             if(char==""){
10                 num = num+value;
11                 $("input[type='text']").val(num);
12             }else{
13                 num2 = num2+value;
14                 $("input[type='text']").val(num+char+num2);
15             }
16         })
17         $(".char input").click(function(){
18             char = $(this).val();
19             $("input[type='text']").val(num+char); 
20         })
21     </script>

需要注意:

  • 我這里的數字1和數字2,代表的是需要運算的兩個數
  • 什么時候存取數字1和數字2,當我點擊了運算符的時候代表我要開始存取數字2,所以這里要做一個if判斷,判斷變量char是否為空,不為空的時候代表我點擊了運算符,需要存取數字2了

第四步:點擊等號運算結果

 1     <script>
 2         var num="";
 3         var num2="";
 4         var char="";
 5         //申明一個變量,來存放結果
 6         var result;
 7         $(".number input").click(function(){
 8             var value = $(this).val();
 9             if(char==""){
10                 num = num+value;
11                 $("input[type='text']").val(num);
12             }else{
13                 num2 = num2+value;
14                 $("input[type='text']").val(num+char+num2);
15             }
16         })
17         $(".char input").click(function(){
18             char = $(this).val();
19             $("input[type='text']").val(num+char); 
20         })
21         //給等於號添加一個事件
22         $(".result input").click(function(){
23             //做一個判斷,來根據點擊的不同運算符,做不同的運算
24             switch(char){
25                 case "+":
26                 result = parseFloat(num) + parseFloat(num2);
27                 break;
28                 case "-":
29                 result = parseFloat(num) - parseFloat(num2);
30                 break;
31                 case "*":
32                 result = parseFloat(num) * parseFloat(num2);
33                 break;
34                 case "/":
35                 result = parseFloat(num) / parseFloat(num2);
36                 break;
37             }
38             //輸出結果
39             $("input[type='text']").val(result);
40         })
41     </script>

第五步:實現連續點擊運算符算出結果功能

 1     <script>
 2         var num="";
 3         var num2="";
 4         var char="";
 5         var result;
 6         $(".number input").click(function(){
 7             var value = $(this).val();
 8             if(char==""){
 9                 num = num+value;
10                 $("input[type='text']").val(num);
11             }else{
12                 num2 = num2+value;
13                 $("input[type='text']").val(num+char+num2);
14             }
15         })
16         $(".char input").click(function(){
17             //判斷num2是否有值,如果有值的情況下點擊運算符表示要做運算操作,輸出結果和運算符號,
18             if(num2){
19                 switch(char){
20                 case "+":
21                 result = parseFloat(num) + parseFloat(num2);
22                 break;
23                 case "-":
24                 result = parseFloat(num) - parseFloat(num2);
25                 break;
26                 case "*":
27                 result = parseFloat(num) * parseFloat(num2);
28                 break;
29                 case "/":
30                 result = parseFloat(num) / parseFloat(num2);
31                 break;
32                 }
33                 //把結果存進變量num
34                  num = result;
35                 //把num2清空方便再次點擊存數字2
36                 num2 = "";
37                 $("input[type='text']").val(num+char);
38             }
39             char = $(this).val();
40             $("input[type='text']").val(num+char); 
41         })
42         $(".result input").click(function(){
43             switch(char){
44                 case "+":
45                 result = parseFloat(num) + parseFloat(num2);
46                 break;
47                 case "-":
48                 result = parseFloat(num) - parseFloat(num2);
49                 break;
50                 case "*":
51                 result = parseFloat(num) * parseFloat(num2);
52                 break;
53                 case "/":
54                 result = parseFloat(num) / parseFloat(num2);
55                 break;
56             }
57             $("input[type='text']").val(result);
58         })
59     </script>

注意的地方:

  • 為什么要 num = result 這行代碼的意義,比如我實現 2+3=5操作,則num="1",char="+",num2="3",result="5", 如果不把result值賦給num,得出5后,再點擊運算符就會出現2+,這是因為num的值為2,第40行代碼輸出了2+
  • num2的值必須清空,如果不清點擊了運算符后點擊數字,會出現舊的值加上點擊的數字,這就不正確了
  • 第39行代碼 char = $(this).val(),不能放在判斷語句前面,第二次點擊了運算符后,我們希望得到前面的運算結果,如果把39行代碼放在判斷語句前面就會出現點擊第二次運算符后,前面的運算根據第二次點擊的運算符來計算。

第五步:實現點擊等號出結果后,我再點擊數字,替換掉原來的值,開始新的運算

 1 <script>
 2         var num="";
 3         var num2="";
 4         var char="";
 5         var result;
 6         var state = false;
 7         $(".number input").click(function(){
 8             var value = $(this).val();
 9             if(char==""){
10                 //如果點擊了等號,並且char為空,清空num和num2的值,方便下面開始存新的數字1
11                 if(state){
12                     num="";
13                     num2="";
14                 //把值設置為false,意義表示沒點擊等號,沒點擊等號的時候不讓這個if語句執行
15                     state=false;
16                 }
17                 num = num+value;
18                 $("input[type='text']").val(num);
19             }else{
20                 num2 = num2+value;
21                 $("input[type='text']").val(num+char+num2);
22             }
23         })
24         $(".char input").click(function(){
25             if(num2){
26                 switch(char){
27                 case "+":
28                 result = parseFloat(num) + parseFloat(num2);
29                 break;
30                 case "-":
31                 result = parseFloat(num) - parseFloat(num2);
32                 break;
33                 case "*":
34                 result = parseFloat(num) * parseFloat(num2);
35                 break;
36                 case "/":
37                 result = parseFloat(num) / parseFloat(num2);
38                 break;
39                 }
40                 num = result;
41                 num2 = "";
42                 $("input[type='text']").val(num+char);
43             }
44             char = $(this).val();
45             $("input[type='text']").val(num+char);
46         })
47         $(".result input").click(function(){
48             switch(char){
49                 case "+":
50                 result = parseFloat(num) + parseFloat(num2);
51                 break;
52                 case "-":
53                 result = parseFloat(num) - parseFloat(num2);
54                 break;
55                 case "*":
56                 result = parseFloat(num) * parseFloat(num2);
57                 break;
58                 case "/":
59                 result = parseFloat(num) / parseFloat(num2);
60                 break;
61             }
62             $("input[type='text']").val(result);
63             //把字符串設為空,方面存取下一步清空操作,然后開始存取數字1的值
64             char = "";
65             //點擊了等號后值變為true
66             state = true; 
67         })

這步算是比較繞了,我點擊了等號再點擊數字需要清空num和num2的值,但是我點擊運算符又不能清除num和num2的值,在哪里清空是需要去考慮的,上面我也說了點等號出結果后 點擊數字表示我要開始存取變量一的值,那么需要點等號后,清空變量char="",然后才能去點擊數字事件里面的 if里面去存取數字1,在存取數字1之前又需要判斷是否點擊了等號,如果點擊了等號才執行清空的操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM