본문 바로가기
HTML+CSS+Javascript/Javascript

11. document

by 김마리님 2020. 3. 13.

앞서 자바스크립트를 처음 할 때 언급했지만, 자바스크립트는 하나의 큰 class 이다. 그렇기에 우리가 document.프로퍼티를 적용할 수 있는 이유는 document=new document 가 이미 실행되어 있기 때문이다. 여기서 알 수 있는 점은 document 라는 태그는 문서를 아우르는 최상위 태그라고 볼 수 있다.

document 객체가 사용하는 프로퍼티와 메소드는 다음과 같다

 

 

- 프로퍼티

location url 정보를 가진 파일의 레퍼런스 정보
domain 도메인 이름
referrer HTML을 로드한 원래 문서의 url 문자열
cookie 쿠키
lastModified 문서의 최근 수정 시간
readyState 문서의 현재 로딩상태를 나타냄
title 문서의 제목
body body객체
head head 객체
defaultView 문서가 출력된 브라우저 윈도우
activeElement 문서가 포커스를 받을 때 문서 내 포커스를 받는 자식 객체
documentElement html 객체
url 현재 문서의 url

 

-메소드

getElementByTagname 주어진 태그를 가진 모든 태그를 리턴
getElementByClassName 주어진 class 속성 값을 가진 모든 태그를 리턴
getElementByName 주어진 name 속성 값을 가진 모든 태그를 리턴
getElementById 주어진 id 속성값을 가진 모든 태그를 리턴
addEventListener document에 이벤트 리스너 등록
close 모든 컨텐츠를 브러우저에 출력하고, 더이상 쓰기를 안받음.
createElement HTML의 동적 생성
open 모든 컨텐처를 지우고, 새 컨텐츠를 쓸 수 있게 열기
removeEventListener 등록된 이벤트 리스너 제거
write HTML 컨텐츠 삽입
writeln 한 칸 띄우고 출력

 

 

-ID로 객체 찾기

    <script>
        var text="문서 로딩 중일때 readyState = "+document.readyState+"\n";
    </script>
</head>
<body onload="printProperties()" style="background-color: yellow; color: blue; direction: rtl;">
    <a href="http://www.naver.com">네이버</a>
    <div>이 곳은 div 영역입니다.</div>
    <input id="input" value="여기 포커스가 있습니다.">
    <script>
        function printProperties(){
            document.getElementById("input").focus();
            text+="1.location = "+document.location+"\n";
            text+="2.URL = "+document.URL+"\n";
            text+="3.title = "+document.title+"\n";
            text+="4.head = "+document.head.id+"\n";
            text+="5.body.color = "+document.body.style.color+"\n";
            text+="6.domain = "+document.domain+"\n";
            text+="7.lastModified = "+document.lastModified+"\n";
            text+="8.defaultView = "+document.defaultView+"\n";
            text+="9.문서의 로드 완료 후 readyState = "+document.readyState+"\n";
            text+="10. documentElement의 태그이름  = "+document.documentElement.tagName+"\n";
            alert(text);
        }
    </script>

 

 

 

-태그 이름으로 객체 찾기

동일한 HTML 태그가 있으면 그 태그의 컬렉션으로 리턴한다.

    <script>
        function change(){
            //태그는 여러개이기 때문에 배열로 리턴
            var spanArr=document.getElementsByTagName("span");
            for(i=0;i<spanArr.length;i++){
                var span=spanArr[i];
                span.style.color="orchid";
                span.style.fontSize="30px";
            }
        }
    </script>
</head>
<body>
    <h3>내가 좋아하는 과일</h3><hr>
    <button onclick="change()">클릭</button>
     저는 빨간 <span>사과</span>를 좋아해서아침마다 한 개씩 먹고 있어요. 운동할 때는 중간 중간에<span>바나나</span>를 먹지요. 탄수화물 섭취가 빨라힘이 납니다. 또한 달콤한 향기를 품은 <span>체리</span>와여름 냄새 물씬 나는 <span>자두</span>를 좋아합니다.
</body>

다음과 같이 span 태그로 묶인 컨텐츠만 변하는 것을 확인할 수 있다.

 

 

- document.write 사용 시 주의할 점

document 객체는 파일이 전부 로드 되고 나면 브라우저의 내용을 지우기 때문에, 로드 된 후 document.write를 사용하면 이전의 내용이 삭제되고 새로 쓰이기 때문에 로드 후 사용하지 않도록 주의한다.

잘못 쓴 예시

<body onclick="document.write('<h3>클릭되었습니다.</h3>')">
    아무때나 클릭하세요.
    </body>

 

 

-document의 열기와 닫기

document.open() 메소드를 이용하여 내부의 HTML 소스를 모두 지우고 새 HTML 텍스트를 작성받을 준비를 할 수 있다. 또 document.close() 메소드를 이용해서 닫고 출력한다.

    <script>
        var win=null;
        function showHTML(){
            if(win==null||win.close){
                win=window.open("","outWin","width=250,height=150");
            }
            ta=document.getElementById("srcText");
            win.document.open();
            win.document.write(ta.value);
            win.document.close();
        }
    </script>
</head>
<body>
    <h3>HTML 문서 작성기 만들기</h3>
    <textarea id="srcText" rows="10" cols="40"></textarea><br>
    <button onclick="showHTML()">HTML 문서 작성</button>
</body>

 

반응형

'HTML+CSS+Javascript > Javascript' 카테고리의 다른 글

Javascript] 강력한 캔버스 라이브러리, fabric  (0) 2021.04.08
12. HTML 문서의 동적 구성  (0) 2020.03.13
10. DOM 객체 다루기  (0) 2020.03.12
9. HTML DOM 개요  (0) 2020.03.12
8. 배열  (0) 2020.03.11