메뉴 건너뛰기

2017.04.05 16:15

8장 연습문제 8번

조회 수 1361 댓글 5

<script>
var elem = document.getElementById("myBody");
        if(elem == null) alert("body is not made yet");
</script>
</head>
<body id="myBody">

 

부분에서 경고문이 출력되는데

getElementById로 "myBody"(본문에 body)에 대한 객체를 찾지만,

객체가 아직 생성되기 전이기 때문에

elem ==NULL 이되어서

경고가 출력되는 건가요 ?

 

?
  • ?
    황기태 2017.04.05 18:19

    그렇습니다. 잘하는군요.
    브라우저가 HTML 파일을 읽어 DOM 객체를 만들어가는 과정에서 자바스크립트 코드가 실행됩니다.
    그런데 아직 < body> 태그가 브라우저에 의해 읽혀지기 전이고 id 값이 myBody인 body 객체가 만들어지기 전이어서
    getElementById()는 null을 리턴하게 됩니다.

    이 문제를 낸 의도는 자바스크립트 코드의 위치와 실행 과정을 잘 알지 못하면 오류에 빠질 수 있음을 알려주려고 만든 것입니다.

  • ?
    은성 2017.04.05 18:41
    감사합니다! 완벽하게 이해 되었습니다!
  • ?
    은성 2017.04.05 18:44
    그런데 한가지 의문이 듭니다.
    <script>는 어디에나 존재할 수 있다고 배웠습니다.
    body안에도 작성이 가능하구요.

    html은 순서대로 로드하는데,
    만약에 스크립트 코드가 body 안에 있다면 어떻게 되나요?
    그때도 우선순위는 script가 먼저 가지나요 ?
  • profile
    관리자 2017.04.05 18:54
    그건 제가 답변해드리겠습니다.
    모든 태그는 위에서 아래 방향으로, 좌에서 우 방향으로 처리가 됩니다.

    아래와 같이 <body> 태그가 구성되어 있다고 생각해봅시다.

    <body>
    <script>
    var test = document.getElementById("test");

    test.style.backgroundColor = "blue";
    </script>

    <div id="test">
    Test
    </div>
    </body>

    이 경우 <script> 태그 내부에서 찾고자 하는 태그인 <div>태그가 <script> 태그보다 나중에 등장하므로 ,
    document.getElementById("test")는 null을 반환하게 되고 <div> 태그의 배경색은 변하지 않습니다.

    이때 순서를 반대로 해서
    <body>
    <div id="test">
    Test
    </div>

    <script>
    var test = document.getElementById("test");

    test.style.backgroundColor = "blue";
    </script>
    </body>
    와 같이 작성하게 되면, <div> 태그의 배경색이 정상적으로 바뀌는 것을 확인할 수 있습니다. ^^
  • ?
    은성 2017.04.05 18:58
    가지고 있던 의문이 해소되어서 다행입니다!
    코드작성순서도 분명 영향을 끼친다는 거군요!
    감사합니다!!

QnA

공부하면서 궁금했던 것을 질문해보세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18276
263 선생님 재질문 드립니다. 1 file 입문한 사람 2020.06.12 150
262 선 색 변경이 안됩니다 1 모르겠어요 2020.06.19 199
261 서버설치와 코드편집기 질문 드려요~ 1 TS2019 2019.10.26 131
260 살다 살다 답을 반쪽만 주는 책은 처음입니다 1 음음 2019.01.24 8847
259 비정형 표 질문 file ㅇㅇ 2020.04.08 193
258 비정형 표 만들기 다운로드 1 애치 2023.04.04 103
257 브라우저 크기 변경 1 열심히 공부하는 독자 2020.08.27 59
256 버튼 태그에 대해서 궁금한게 있습니다!! 1 아이디가뭐였지 2021.03.22 128
255 배경슬라이드가 뭔지 추가설명하겠습니다 2 hansung 2019.06.27 92
254 바닐라js 란 것에 대해 질문이 있습니다. 2 muuum 2018.11.01 546
253 몽구스 질문있습니다 ㅜㅜ 3 몽구스초보입니다 2019.01.10 1003
252 몽구스 질문드립니다. 2 서동 2018.02.26 259
251 몽구스 웹서버가 작동 안됩니다. 바울 2021.07.22 148
250 몽구스 웹서버가 뭔가요? 1 안녕하세요 2020.08.16 101
249 몽구스 서버 외부접속 질문드립니다. 1 명품프로그래머 2017.10.26 277
248 몽구스 관련 질문입니다. 1 류경선 2018.01.20 490
247 목록을 한줄로 나란하게 만드는 법 질문드립니다 3 file 입문한 사람 2020.04.04 260
246 명품 수정판 HTML5+ CSS3+ Javascript 웹 프로그래밍 p.74 메타 데이터 <meta> 문의 1 mikael 2021.05.06 113
245 명품 html5+css3책과 HTML의 차이가 궁금합니다 저자님 2 보안 2019.05.03 328
244 명품 html5+ 수정판 p.89 예제 2-21 파일 다운로드 링크 만들기 실행 오류 문의 1 file mikael 2021.04.15 201
목록
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 21 Next
/ 21
위로