[JavaScript] simple Counter

2023. 7. 3. 15:00Tip

728x90

텍스트

더보기
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Week 9: Counter</title>

  <script>
    const counter_id = "counter"
    let counter_element = null

    // 삽입
    // document.write()로 body 태그 직접 수정
    const func_insert = () => {
      let content =
        `<h1>${counter_id.toUpperCase()}</h1>
        <hr>
        <table>
          <tr>
            <td style="text-align: center;">
              <p id="${counter_id}" style="font-size: 30px;">0</p>
            </td>
          </tr>
          <tr>
            <td>
              <button onclick="func_update(document.getElementById('${counter_id}'), +1)">증가</button>
              <button onclick="func_update('${counter_id}', -1)">감소</button>
              <button onclick="func_update(counter_element, Number.NEGATIVE_INFINITY)">초기화</button>
            </td>
          </tr>
        </table>`
      document.write(content)

      // 코드가 동적으로 삽입되기 때문에
      // 이 시점부터 element 할당이 가능하다
      counter_element = document.getElementById(counter_id)
    }

    // 수정
    // 특정 태그의 event로 등록된 callback 함수의 형식
    const func_update = (element, digit) => {
      if (element.innerText == null) element = document.getElementById(element)
      if (element.innerText == null) element = document.getElementById('counter')

      let counter_value = Number(element.innerText) + digit
      element.innerText = counter_value > 0 ? counter_value : 0
    }

  </script>
</head>

<body onload="func_insert()">
</body>

</html>
728x90