• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

코드의 차이점

23.11.30 03:00 작성 조회수 203

0

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script>
  document.addEventListener('DOMContentLoaded', () => {
    const $text = document.querySelector('#text');
    const $textarea = document.querySelector('#textarea');
    $textarea.addEventListener('keyup', () => {

      $text.textContent = $textarea.value.length;
    });

  })
</script>

<body>

  <h1 id='text'>글자수 : 0</h1>
  <textarea id="textarea"></textarea>

</body>

</html>
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<script>
  const $text = document.querySelector('#text');
  const $textarea = document.querySelector('#textarea');
  document.addEventListener('DOMContentLoaded', () => {
    $textarea.addEventListener('keyup', () => {

      $text.textContent = $textarea.value.length;
    });

  })
</script>

<body>

  <h1 id='text'>글자수 : 0</h1>
  <textarea id="textarea"></textarea>

</body>

</html>

안녕하세요 선생님. 학습중에 궁금한 점이 생겨 질문 남깁니다

왜 위 코드는 실행이 되고 아래 코드는 실행이 안되는지 궁금합니다.

$textarea가 null이라고 나오는 것 같은데 스크립트 태그의 최상단에 $textarea를 dom객체로 지정해줬는데
혹시 addeventlistener가 비동기 방식으로 먼저 호출이 되기 때문인가요?

브라우저 동작 방식에 관련된 문제일까요?

답변 1

답변을 작성해보세요.

0

html 코드는 위에서 아래로 실행됩니다. script 태그가 실행될 때 html body 태그들이 없어서 그렇습니다.

DOMcontentLoaded는 body가 다 로딩되길 기다립니다.