用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之前又需要判断是否点击了等号,如果点击了等号才执行清空的操作。

时间: 2024-11-08 21:10:00

用jQ实现一个简易计算器的相关文章

c语言:编写一个简易计算器,打印菜单界面,实现加减乘除运算,可以退出菜单界面

.编写一个简易计算器 程序: #include<stdio.h> enum  OP { EXIT,//0 ADD,//1 SUB,//2 MUL,//3 DIV//4 }; void menu()//menu表示菜单 { printf("**** 1.add  ****\n"); printf("**** 2.sub  ****\n"); printf("**** 3.mul  ****\n"); printf("**** 

制作一个简易计算器——基于Android Studio实现

一个计算器Android程序的源码部分分为主干和细节两部分. 一.主干 1. 主干的构成 计算器的布局 事件(即计算器上的按钮.文本框)监听 实现计算 2. 详细解释 假设我们的项目名为Calculator,而布局名称(Layout Name)为默认的activity_main .即设置如下图所示: 在这种前提下,有: 设置计算器布局的文件:Calculator/app/src/main/res/layout/activity_main.xml 事件监听和计算实现在同一个文件里:Calculat

如何用jsp实现一个简易计算器(三)

做这个jsp页面,主要是为了实现在同一个页面提交和接受数据的功能. 这个小程序存在很多不足,希望大家多多批评指正. <%@ page language="java" contentType="text/html;" pageEncoding="gbk"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://w

JS制作一个简易计算器

//javascript简易计算器 <!DOCTYPE html> <html>  <head>   <title> 事件</title>     <script type="text/javascript">    function count(){             //获取第一个输入框的值     var node1=document.getElementById('txt1').value;     

用Python实现一个简易计算器

自己动手写计算器 一.功能分析 用户输入一个类似这样 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 这样的表达式,假设表达式里面除了包含空格.'+'.'-'.'*'.'/'和括号再无其他特殊符号,然后直接动手写代码解析其中的表达式,实现加减乘除,最后得出的结果与真实的计算机所算的结果必须一致. 二.所需的知识点 字符串的处理 正则表达式的运用 函数递归 三.程序实现流程分析 处理用户输入的字符串,去除多余的空格 用正则表达

java 实现一个简易计算器

import java.util.Scanner;public class Test { public static void main(String[] args) { count(); } public static void count() { Scanner input1 = new Scanner(System.in); System.out.println("输入一个数"); double a = input1.nextDouble(); while (true) { Sc

用iOS 做一个简易计算器 (功能完备)

源码(.m文件) #import "ZKJAppDelegate.h" @interface ZKJAppDelegate () @property (retain,nonatomic) UIView *containView; @property (retain, nonatomic) UIButton *button; @property (retain, nonatomic) UILabel *label; @property (retain, nonatomic) NSMuta

函数调用_猜数字和简易计算器

package app1; import java.util.*; public class TestFunction{     public static void main(String[] args){         Scanner sc=new Scanner(System.in);         System.out.print("请选择一项应用:\n1.猜数字\n2.简易计算器");         int n=sc.nextInt();         switch(

C#Windows Form简易计算器实现(上)

第一次写博客,来分享一个简易计算器的代码.作为一名准程序员,就是要多写代码才能孰能生巧.重视基础知识才能飞的更快更高以及更稳. 代码可能会写的很糟糕,不完美不安全之处希望发现的越多越好 c#编写计算器带窗口的,对于新手来说是如何建立窗体以及实现按钮的响应事件吧!那么,首先来探索下窗口是怎么实现的吧! 步骤1:新建项目→C#windows窗体应用程序→新建解决方案 此时你会发现有两个名称,一个是解决方案名称,一个是项目名称.对于小程序来说其实没什么区别.但对于大点的程序最好就要区别开了.解决方案就