updated_at: 2024-12-15 04:30

계산기 자바스크립트

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>

Table of contents 목차

평점을 남겨주세요
평점 : 2.5
총 투표수 : 1

질문 및 답글