NaN = 0 ; // 만약 입력된 문자가 숫자가 아닌경우 값을 0 으로 간주한다.
var stack = 0 ; // 첫번째 값을 기억하기 위해 사용되는 변수
var op = '+' ; // 연산자를 기억하기 위해 사용되는 변수
var assume_equals = false ; // '=' 을 클릭하지 않았을때 합계를 계산하는데 사용되는 변수
var nnum = true ; // 숫자가 새로 입력되는 것인지 나타내는 Flag
// 숫자키를 누른 경우의 처리함수
function digitpress(val) {
if (nnum == false) { // 새로 입력하는 숫자가 아니면 현재 화면상의 숫자에 숫자를 추가한다.
if( document.calc.screen.value == 0 )
document.calc.screen.value = val ;
else
document.calc.screen.value = document.calc.screen.value + val ;
} else { // 새로운 숫자 입력을 시작한다.
stack = parseFloat(document.calc.screen.value) ; // 이전 값을 저장한다.
document.calc.screen.value = val ; // 새로 입력된 숫자를 보여준다.
nnum = false ; // 이후의 숫자들은 모두 뒤에 추가된다.
}
return true ;
}
// 연산자를 누른 경우의 처리함수 ( +, -, *, /, = 중에 한가지 )
function pushop(s) {
if (s == '=' || assume_equals == true) { // 화면상의 합계를 갱신해야한다.
v = parseFloat(document.calc.screen.value) ; // 현재 화면상의 숫자를 일단 저장한다.
// 일단 division by zero 에러를 검출한다.
if ( !(op == '/' && v == 0) ) {
// 합계 결과를 화면에 출력한다.
document.calc.screen.value = eval( (stack) + op + v ) ;
if (s != '=') { // '=' 연산자가 아닌경우 현재의 연산자와 합계를 저장한다.
op = s ;
stack = parseFloat(document.calc.screen.value) ;
} else {
assume_equals = false ; // '=' 연산자인 경우 다음 연산에는 합계를 수행하지 않는다.
}
} else { // division by zero 에러인 경우 메세지를 출력한다.
document.calc.screen.value = "Error" ;
assume_equals = false ; // 에러가 발생했으므로 다음 연산에는 합계를 수행하지 않는다.
}
nnum = true ; // 숫자가 새로 입력될것임
} else { // 아니면 현재의 값과 연산자를 저장한다.
assume_equals = true ; // 다음 연산은 합계를 구한다.
stack = parseFloat(document.calc.screen.value) ; // 현재의 합계를 저장한다.
nnum = true ; // 다음에 입력되는 숫자는 새로운 숫자이다.
op = s ; // 방금 입력된 연산자를 저장한다.
}
return true ;
}
function enter_onkeypress() {
var key = event.keyCode ;
if( key == 48 )
document.calc.key0.click() ;
else if( key == 49 )
document.calc.key1.click() ;
else if( key == 50 )
document.calc.key2.click() ;
else if( key == 51 )
document.calc.key3.click() ;
else if( key == 52 )
document.calc.key4.click() ;
else if( key == 53 )
document.calc.key5.click() ;
else if( key == 54 )
document.calc.key6.click() ;
else if( key == 55 )
document.calc.key7.click() ;
else if( key == 56 )
document.calc.key8.click() ;
else if( key == 57 )
document.calc.key9.click() ;
else if( key == 43 )
document.calc.plus.click() ;
else if( key == 45 )
document.calc.minus.click() ;
else if( key == 42 )
document.calc.times.click() ;
else if( key == 47 )
document.calc.divide.click() ;
else if( key == 13 || key == 61 )
document.calc.equal.click() ;
else if( key == 98 || key == 66 )
document.calc.bs.click() ;
else if( key == 99 || key == 67 )
document.calc.C.click() ;
else if( key == 97 || key == 65 )
document.calc.AC.click() ;
else if( key == 46 )
document.calc.dot.click() ;
return false ;
}
function BackSpace() {
if( document.calc.screen.value == 0 && document.calc.screen.value.length == 1 ) {
nnum = true ;
return ;
} else if( document.calc.screen.value.length == 1 ) {
nnum = true ;
document.calc.screen.value = 0 ;
} else
document.calc.screen.value = document.calc.screen.value.substring(0, document.calc.screen.value.length - 1 ) ;
}
document.onkeypress = enter_onkeypress ;
<form name="calc">
<input type="text" name="screen" value="0" size=20 maxlength=20>
<table>
<tr align=center>
<td><input type="button" name="key1" value=" 1 " onClick="digitpress(1)"></td>
<td><input type="button" name="key2" value=" 2 " onClick="digitpress(2)"></td>
<td><input type="button" name="key3" value=" 3 " onClick="digitpress(3)"></td>
<td><input type="button" name="plus" value=" + " onClick="pushop('+')"></td>
<td><input type="button" name="minus" value=" - " onClick="pushop('-')"></td>
</tr>
<tr align=center>
<td><input type="button" name="key4" value=" 4 " onClick="digitpress(4)"></td>
<td><input type="button" name="key5" value=" 5 " onClick="digitpress(5)"></td>
<td><input type="button" name="key6" value=" 6 " onClick="digitpress(6)"></td>
<td><input type="button" name="times" value=" * " onClick="pushop('*')"></td>
<td><input type="button" name="divide" value=" / " onClick="pushop('/')"></td>
</tr>
<tr align=center>
<td><input type="button" name="key7" value=" 7 " onClick="digitpress(7)"></td>
<td><input type="button" name="key8" value=" 8 " onClick="digitpress(8)"></td>
<td><input type="button" name="key9" value=" 9 " onClick="digitpress(9)"></td>
<td><input type="button" name="AC" value="AC" onClick="document.calc.screen.value=0; nnum=true ;"></td>
<td><input type="button" name="C" value=" C " onClick="document.calc.screen.value=0;"></td>
</tr>
<tr align=center>
<td><input type="button" name="key00" value="00" onClick="digitpress('00')"></td>
<td><input type="button" name="key0" value=" 0 " onClick="digitpress(0)"></td>
<td><input type="button" name="bs" value="BS" onClick="BackSpace()"></td>
<td><input type="button" name="dot" value=" . " onClick="digitpress('.')"></td>
<td><input type="button" name="equal" value=" = " onClick="pushop('=')"></td>
</tr>
</table>
<div>
AC (계산기 초기화) : A 키
C ( 입력값 삭제 ) : C 키
BS ( BackSpace ) : B 키
</div>
</form>