Java Script

[DOM] html 내에서 JavaScript 파일 호출하기

책먹는아인 2021. 9. 12. 00:37

DOM이란?

Document Object Model의 약자이다.

HTML 엘리먼트들을 자바스크립트로 자바스크립트 객체처럼 조작 할 수 있는 개념이다.

 

<script src="script.js"></script>

 

위 처럼 자바스크립트 파일을 불러오는 구문을 HTML문서내에 추가하여 실행할 수 있다.

script.js 파일 내에 기술된 자바스크립트 명령어로 HTML문서 내 요소를 제어하는 것이다.

 

위 구문을 집어넣을 때는 HTML내의 <head></head> 내부나 아니면 </body>의 직전에 추가한다.

그 이유는 자바스크립트 파일은 불러들이는 즉시 실행되며, HTML문서는 위에서부터 아래로 내려가며 실행되기 때문이다.

 

 

예를 들어 script.js 파일을 이렇게 작성하였다고 하자.

script.js 파일  - [소스 0]

이 파일을 <head></head>내부에서 불러오면, 2번째 콘솔로그는 제대로 출력되지 않는다.

1) <head></head> 안에 넣기  - [소스 1]

결과 : 

2번째 콘솔이 제대로 실행되지 않았다.

불러와야 할 #msg요소가 등장하기 이전에 자바스크립트가 먼저 실행되버리기 때문이다.

자바스크립트가 실행되는 시점에는 아직 #msg요소가 없다.

 

그래서 위같은 경우는 이렇게 짜야 한다.

2) </body> 직전에 넣기  - [소스 2]

이렇게 <body>태그가 끝나기 직전에 자바스크립트 호출을 넣는다면 두번째 console.log까지 제대로 출력된다.

결과 : 

2번째 콘솔이 제대로 실행되고 있다.

 

그러므로 코드에 따라 적절하게,

1) <head></head>안에 넣던지,

2) <body></body> 마지막에 추가하도록 해야 한다.

 

 

 

[소스 0] script.js 파일

console.log('Hello World!'); //1번째 콘솔로그

let msgElement = document.querySelector('#msg');
console.log(msgElement); //2번째 콘솔로그

 

[소스 1] <head></head> 내에 추가

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <!-- script 요소 삽입 위치 -->
    <script src="script.js"></script>
  </head>
  <body>
    <div id="msg">Welcome~!</div>
  </body>
</html>

 

[소스 2] <body></body> 마지막에 추가

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>

  <body>
    <div id="msg">Welcome!</div>
    <!-- script 요소 삽입 위치 -->
    <script src="script.js"></script>
  </body>
</html>

 

이 이미지는 본문의 내용과 전혀 상관없습니다. 코딩하다 눈이 아프면 한번씩 보기 위해 넣습니다.