1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>JavaScript计算器</title>
6 </head>
7
8
9 <script language="JavaScript">
10 var baseoper;
11 var digitstate;
12 var num1;
13 var operstate;
14
15 function setStartState()
16 {
17 digitstate="beempty";
18 num1=0;
19 baseoper="beempty";
20 operstate=false;
21
22 }
23 function add(i)
24 {
25 if(operstate)
26 {
27 cal.total.value=i;
28 operstate=false;
29 }
30 else
31 {
32 if(cal.total.value=="0")
33 {
34 cal.total.value=i;
35 digistate="bein";
36 }
37 else
38 cal.total.value+=i;
39 }
40 }
41 function cleartext()
42 {
43 cal.total.value="0";
44 digitstate="beempty";
45 basestate="beempty"
46 }
47
48 function count()
49 {
50 if(baseoper!="beempty")
51 {
52 switch(baseoper)
53 {
54 case"+":
55 num1=parseFloat(num1)+parseFloat(cal.total.value);
56 break;
57 case"-":
58 num1=parseFloat(num1)-parseFloat(cal.total.value);
59 break;
60 case"*":
61 num1=parseFloat(num1)*parseFloat(cal.total.value);
62 break;
63 case"/":
64 num1=parseFloat(num1)/parseFloat(cal.total.value);
65 break;
66 }
67 preoper=true;
68 cal.total.value=num1;
69 }
70 baseoper="beempty";
71 }
72 function useFunc(func)
73 {
74 switch(func)
75 {
76 case"sin":
77 cal.total.value=Math.sin(cal.total.value);
78 break;
79 case"cos":
80 cal.total.value=Math.cos(cal.total.value);
81 break;
82 case"asin":
83 cal.total.value=Math.asin(cal.total.value);
84 break;
85 case"acos":
86 cal.total.value=Math.acos(cal.total.value);
87 break;
88 case"tan":
89 cal.total.value=Math.tan(cal.total.value);
90 break;
91 case"atan":
92 cal.total.value=Math.atan(cal.total.value);
93 break;
94 case"log":
95 cal.total.value=Math.log(cal.total.value);
96 break;
97 case"exp":
98 cal.total.value=Math.exp(cal.total.value);
99 break;
100 case"sqrt":
101 cal.total.value=Math.sqrt(cal.total.value);
102 break;
103 case"1/x":
104 cal.total.value=1/cal.total.value;
105 break;
106 }
107 operstate=true;
108 }
109 function addPoint()
110 {
111 if(digitstate=="bein"||digitstate=="beempty")
112 {
113 cal.total.value+=".";
114 digistate="befloat";
115 }
116 }
117 function setOper(oper)
118 {
119 operstate=true;
120 if(baseoper=="beempty")
121 {
122 num1=0+cal.total.value;
123 baseoper=oper;
124 }
125 else
126 {
127 count();
128 baseoper=oper;
129 }
130 }
131
132 </script>
133 <body onload="setStartState()">
134 <font size=6> JavaScript计算器</font>
135 <!--计算器界面--------计算器界面-->
136 <form name="cal">
137 <table border="5" align="left" bordercolor="#FFCCFF">
138 <tr align="center">
139 <td colspan="6">
140 <input type="Text" name="total" size="25" value="0">
141 </td>
142 </tr>
143
144 <tr align="center">
145 <td><input type="Button" value="sin" onclick="useFunc('sin')"></td>
146 <td><input type="Button" value="cos" onclick="useFunc('cos')"></td>
147 <td><input type="Button" value="1" onclick="add('1')"></td>
148 <td><input type="Button" value="2" onclick="add('2')"></td>
149 <td><input type="Button" value="3" onclick="add('3')"></td>
150 <td><input type="Button" value="+" onclick="setOper('+')"></td>
151 </tr>
152
153 <tr align="center">
154 <td><input type="Button" value="asin" onclick="useFunc('asin')"></td>
155 <td><input type="Button" value="acos" onclick="useFunc('acos')"></td>
156 <td><input type="Button" value="4" onclick="add('4')"></td>
157 <td><input type="Button" value="5" onclick="add('5')"></td>
158 <td><input type="Button" value="6" onclick="add('6')"></td>
159 <td><input type="Button" value="-" onclick="setOper('-')"></td>
160 </tr>
161
162 <tr align="center">
163 <td><input type="Button" value="tan" onclick="useFunc('tan')"></td>
164 <td><input type="Button" value="atan" onclick="useFunc('atan')"></td>
165 <td><input type="Button" value="7" onclick="add('7')"></td>
166 <td><input type="Button" value="8" onclick="add('8')"></td>
167 <td><input type="Button" value="9" onclick="add('9')"></td>
168 <td><input type="Button" value="*" onclick="setOper('*')"></td>
169 </tr>
170
171 <tr align="center">
172 <td><input type="Button" value="log" onclick="useFunc('log')"></td>
173 <td><input type="Button" value="exp" onclick="useFunc('exp')"></td>
174 <td><input type="Button" value="0" onclick="add('0')"></td>
175 <td><input type="Button" value="." onclick="addPoint()"></td>
176 <td><input type="Button" value="=" onclick="count()"></td>
177 <td><input type="Button" value="/" onclick="setOper('/')"></td>
178 </tr>
179
180 <tr align="center">
181 <td><input type="Button" value="sqrt" onclick="useFunc('sqrt')">
182 <td><input type="Button" value="1/x" onclick="useFunc('1/x')">
183 <td><input type="Button" value="pi" onclick="cal.total.value=Math.PI"></td>
184 <td><input type="Button" value="E" onclick="cal.total.value=Math.E"></td>
185 <td colspan=2><input type="Button" value="清除" onclick="cleartext()"></td>
186 </tr>
187
188 </table>
189 </form>
190 </body>
191 </html>