인프런 커뮤니티 질문&답변

거누님의 프로필 이미지

작성한 질문수

[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문

게산기 공부 중 질문있습니다

22.01.25 12:43 작성

·

158

0

버튼에 id를 각자 주셨는데 같은 클래스명을 사용하고

클릭한 버튼의 textContent만 받으면 가능하지 않을까? 하고 생각했는데

7만 인식하고 다른 버튼은 인식을 아예 못하는데 이유가 뭔지 모르겠습니다.ㅠㅠ

event.target으로 콘솔로그를 찍어봐도 7밖에 인식이 안돼서 이유를 잘 모르겠습니다....

 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>calculator</title>
    <style>
      * {
        box-sizing: border-box;
      }

      #operator {
        width: 50px;
        height: 50px;
        margin: 5px;
        text-align: center;
      }

      #result {
        width: 180px;
        height: 50px;
        margin: 5px;
        text-align: right;
      }

      button {
        width: 50px;
        height: 50px;
        margin: 5px;
      }
    </style>
  </head>
  <body>
    <input readonly id="operator" />
    <input readonly type="number" id="result" />
    <div class="row">
      <button class="digit">7</button>
      <button class="digit">8</button>
      <button class="digit">9</button>
      <button id="plus">+</button>
    </div>
    <div class="row">
      <button class="digit" id="num-4">4</button>
      <button class="digit" id="num-5">5</button>
      <button class="digit" id="num-6">6</button>
      <button id="minus">-</button>
    </div>
    <div class="row">
      <button class="digit" id="num-1">1</button>
      <button class="digit" id="num-2">2</button>
      <button class="digit" id="num-3">3</button>
      <button id="divide">/</button>
    </div>
    <div class="row">
      <button id="clear">C</button>
      <button class="digit" id="num-0">0</button>
      <button id="equal">=</button>
      <button id="multiply">x</button>
    </div>
  </body>
  <script>
    let numOne = "";
    let operator = "";
    let numTwo = "";
    const $operator = document.querySelector("#operator");
    const $result = document.querySelector("#result");

    const onClickNumber = (event) => {
      if (!operator) {
        numOne += event.target.textContent;
        $result.value += event.target.textContent;
        return;
      }

      if (!numTwo) {
        $result.value = "";
      }

      numTwo += event.target.textContent;
      $result.value += event.target.textContent;
    };

    document.querySelector(".digit").addEventListener("click", onClickNumber);
  </script>
</html>

 

 

 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2022. 01. 25. 13:05

document.querySelector는 처음 만나는 태그 하나만 선택합니다. 여러 개를 선택하려면 document.querySelectorAll을 써야하고요. 유사배열이라서 반복문을 돌리면서 eventlistener를 달아주어야 합니다.

거누님의 프로필 이미지

작성한 질문수

질문하기