-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcalculator.js
125 lines (115 loc) · 3.67 KB
/
calculator.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
window.onload = function(){
var flag = 1;
document.getElementById("screen").value = "0";
var arr = document.getElementsByClassName("$input");
for(var i = 0;i < arr.length;i++){
arr[i].onclick = function(){
if(flag == 0){//上一次按键为‘=’
flag = 1;
var message = document.getElementById("screen");
if(this.innerHTML=='+'||this.innerHTML=='-'||this.innerHTML=='*'||this.innerHTML=='/'){
message.value += this.innerHTML;
}
else if(this.innerHTML=='.'){
message.value = "0"+this.innerHTML;
}
else{
message.value = this.innerHTML;
}
}
else{
var message=document.getElementById("screen");
if(message.value == "0"){
if(this.innerHTML>='0'&&this.innerHTML<='9'){
message.value = this.innerHTML;
}
else if(this.innerHTML=='('){
message.value = this.innerHTML;
}
else{
message.value += this.innerHTML;
}
}
else{
var len = message.value.length;
var temp = message.value[len-1];
if(temp=='+'||temp=='-'||temp=='*'||temp=='/'||temp=='.'){
if(this.innerHTML=='+'||this.innerHTML=='-'||this.innerHTML=='*'||this.innerHTML=='/'||this.innerHTML=='.'){
message.value = message.value.substring(0, message.value.length - 1);
}
}
else if(this.innerHTML=='('){
if((temp>='0'&&temp<='9')||temp==')'){
message.value += "*";
}
else if(temp=='.'){
message.value += "0";
}
}
else if(len > 1&&temp == '0'){
if((message.value[len-2]=='+'||message.value[len-2]=='-'||message.value[len-2]=='*'||message.value[len-2]=='/')&&(this.innerHTML>='0'&&this.innerHTML<='9')){
message.value = message.value.substring(0, message.value.length - 1);
}
}
message.value += this.innerHTML;
}
}
var _size = document.getElementById("screen");
if(_size.value.length>25&&_size.value.length<29){
_size.style.fontSize = 22+"px";
}
else if(_size.value.length>28){
_size.style.fontSize = 19+"px";
}
else if(_size.value.length<26){
_size.style.fontSize = 25+"px";
}//控制字体
}
}
document.getElementById("ce").onclick = function(){
var message=document.getElementById("screen");
document.getElementById("screen").style.fontSize = 25+"px";
message.value = "0";
}
document.getElementById("delete").onclick = function(){
var message = document.getElementById("screen");
if(message.value.length!=1){
message.value = message.value.substring(0, message.value.length - 1);
}
else{
message.value = "0";
}
var _size = document.getElementById("screen");
if(_size.value.length>25&&_size.value.length<29){
_size.style.fontSize = 22+"px";
}
else if(_size.value.length>28){
_size.style.fontSize = 19+"px";
}
else if(_size.value.length<26){
_size.style.fontSize = 25+"px";
}
}
document.getElementById("evaluate").onclick = function(){
flag = 0;
document.getElementById("screen").style.fontSize = 25+"px";
var m = Math.pow(10,10);
var f = document.getElementById("screen").value;
try{
document.getElementById("screen").value = parseFloat(eval(f).toFixed(10));
}
catch(exception){
alert("'"+document.getElementById("screen").value+"'不是合法算式!");
document.getElementById("screen").value = "0";
return;
}
if(document.getElementById("screen").value=="undefined"){
document.getElementById("screen").value = "0";
alert("请输入算式!");
}
else if(document.getElementById("screen").value=="NaN"||document.getElementById("screen").value=="Infinity"||document.getElementById("screen").value=="-Infinity"){
document.getElementById("screen").value = "0";
alert("除数不能为0!");
}
}
}