본문 바로가기
자바과정/자바스크립트

자바스크립트 실습(계산기)

by Parkej 2021. 3. 2.

계산기.zip
0.00MB

// script 부분

 

      var numberPrev = false; // 이전값이 숫자인지 연산자인지
      function findButton(char){
        if(document.getElementById("txt").value == 0){
          // clear후 텍스트박스 초기값이 0이면 버튼 눌렀을때 0을 지우고 시작.
          document.getElementById("txt").value = "";
        }
        if(numberPrev == false){
          if(isNaN(char)==true){ // isNaN은 숫자가 아니면 true를 반환
          }
          else{ // 문자가 아니라면
            document.getElementById("txt").value += char;
          }
        }
        else{ // 이전에 숫자를 입력했으면
          if(char == '^')
          {
            document.getElementById("txt").value += '**';
          }
          else{
            document.getElementById("txt").value += char;
          }
        }

        if(isNaN(char) == true){ // 들어온 문자가 숫자가 아닌 문자라면
          numberPrev = false;
        }
        else{ // 숫자라면
          numberPrev = true; // 이전값이 숫자면 
        }
      }
      
      function reset(){
        var txt = document.getElementById("txt").value = 0;
      }

      function operation(){
        var txt = document.getElementById("txt");
        var tf = false;
        var mm = txt.value.split("^");
        var oper = eval(txt.value);
        txt.value = oper;
      }

      function mathop(char){
        var txt = document.getElementById("txt");
        if(txt.value == ""){
          return
        }
        switch(char){
          // case 'x^y' 
        case "_^":
          txt.value = txt.value + char; 
          
          break;
        
        case "_sin":
          txt.value = Math.sin(parseInt(txt.value));
          break;
        case "_cos":
          txt.value = Math.cos(parseInt(txt.value));
          break;
        case "_tan":
          txt.value = Math.tan(parseInt(txt.value));
          break;
        } 
      }
      function changInt(){
        var txt = document.getElementById("txt");
        if(txt.value < 0){
          txt.value = Math.abs(parseInt(txt.value));
          
        }
        else{
          txt.value = '-' + txt.value;
        }
      }

 

// html 부분

 

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>계산기</title>
    <!-- css 로드 -->
    <link href="style.css" rel="stylesheet" type="text/css" /> 
    <!-- script 로드 -->
    <script type ="text/javascript" src="script.js"></script>  
  </head>

  <body>
    <main>
    <input id = "txt" type="text" size=37 style = "text-align:right;">
    <br><br>
    <div class = "top">
      <button onclick = "reset()">Clear</button>
      <button onclick = "operation()">=</button>
    </div>
    <br>
    <div class = "button-l" >
    <button type="button" onclick="findButton(1)">1</button>
    <button onclick="findButton(2)">2</button>
    <button onclick="findButton(3)">3</button>
    <button onclick="findButton('+')">+</button>
    <button onclick="findButton('^')">x^y</button>
    <button onclick="findButton(4)">4</button>
    <button onclick="findButton(5)">5</button>
    <button onclick="findButton(6)">6</button>
    <button onclick="findButton('-')">-</button>
    <button onclick="mathop('_sin')">sin</button>
    <button onclick="findButton(7)">7</button>
    <button onclick="findButton(8)">8</button>
    <button onclick="findButton(9)">9</button>
    <button onclick="findButton('*')">*</button>
    <button onclick="mathop('_cos')">cos</button>
    <button onclick="changInt()">+/-</button>
    <button onclick="findButton(0)">0</button>
    <button onclick="findButton('.')">.</button>
    <button onclick="findButton('/')">/</button>
    <button onclick="mathop('_tan')">tan</button>
    </div>
    </main>
  </body>
</html>

 

// css 부분

 

      main{
        width:300px;
      }
      .button-l{
        display: grid;
        grid-gap: 5px;
        grid-template-columns: repeat(5,1fr);
      }
      .top{
        display: grid;
        grid-gap: 5px;
        grid-template-columns: repeat(2,1fr);
      } 
반응형

댓글