일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바스크립트 jQuery
- 카카오프로젝트
- oracle
- javascript
- 보안뉴스요약
- numpy
- 보안뉴스
- 깃허브
- php
- Oracle SQL
- 자바스크립트 객체
- 랜섬웨어
- 오라클
- 자바스크립트 API
- 자바스크립트 기본 문법
- 카카오프로젝트100
- 자바스크립트 element api
- ES6
- 자바스크립트 prototype
- GIT
- python
- oracle db
- 다크웹
- 보안뉴스 한줄요약
- 보안뉴스 요약
- 자바스크립트 node
- 자바스크립트
- 카카오프로젝트 100
- 파이썬
- 보안뉴스한줄요약
- Today
- Total
FU11M00N
[ JavaScript ] JS HTMLElement , DOM Tree 본문
생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅입니다.
- HTMLElement
getElement* 메소드를 통해서 원하는 객체를 조회를 해봤다면 이 객체들을 대상으로 구체적인 작업을 해봐야합니다.
먼저 얻은 어떠한 객체인지 알아야 적절한 메소드나 프로퍼티를 사용할 수있습니다.
아래 코드는 getElement*의 리턴 값을 보여줍니다.
<ul>
<li>HTML</li>
<li>CSS</li>
<li id="active">JavaScript</li>
</ul>
<script>
var li = document.getElementById('active');
console.log(li.constructor.name);
var lis = document.getElementsByTagName('li');
console.log(lis.constructor.name);
</script>
이것을 통해서 알 수 있는 것은 아래와 같습니다.
- document.getElementById : 리턴 데이터 타입은 HTMLLIELement
- document.getElementsByTagName : 리턴 데이터 타입은 HTMLCollection
실행결과가 하나인 경우 HTMLLIELement, 복수인 경우 HTMLCollection을 리턴하고 있습니다.
실행 결과가 하나인 엘리먼트들을 조금 더 자세하게 살펴보도록 하겠습니다.
<a id="anchor" href="http://opentutorials.org">opentutorials</a>
<ul>
<li>HTML</li>
<li>CSS</li>
<li id="list">JavaScript</li>
</ul>
<input type="button" id="button" value="button" />
<script>
var target = document.getElementById('list');
console.log(target.constructor.name);
var target = document.getElementById('anchor');
console.log(target.constructor.name);
var target = document.getElementById('button');
console.log(target.constructor.name);
</script>
위는 결과가 하나인 엘리먼트입니다.
이를 통해서 알 수 있는 것은 엘리먼트의 종류에 따라서 리턴되는 객체가 조금씩 다르다는 것입니다.
각각의 객체의 차이점을 알아봅시다.
HTMLLIElement는 아래와 같습니다.
interface HTMLLIElement : HTMLElement {
attribute DOMString type;
attribute long value;
};
다음은 HTMLAnchroElement입니다.
interface HTMLAnchorElement : HTMLElement {
attribute DOMString accessKey;
attribute DOMString charset;
attribute DOMString coords;
attribute DOMString href;
attribute DOMString hreflang;
attribute DOMString name;
attribute DOMString rel;
attribute DOMString rev;
attribute DOMString shape;
attribute long tabIndex;
attribute DOMString target;
attribute DOMString type;
void blur();
void focus();
};
즉 엘리먼트 객체에 따라서 프로퍼티가 다르다는 것을 알 수 있습니다.
하지만 모든 엘리먼트들은 HTMLElement를 상속 받고 있습니다.
interface HTMLLIElement : HTMLElement {
interface HTMLAnchorElement : HTMLElement {
HTMLElement를 알아보겠습니다.
interface HTMLElement : Element {
attribute DOMString id;
attribute DOMString title;
attribute DOMString lang;
attribute DOMString dir;
attribute DOMString className;
};
모든 태그에서 사용가능했던 id 나 class 같은 동일하게 있어도 되는 프로퍼티가 들어있었습니다.
- DOM Tree
모든 엘리먼트는 HTMLElement의 자식입니다.
따라서 HTMLElement의 프로퍼티를 똑같이 가지고 있다고 말 할 수 있습니다.
동시에 엘리먼트의 성격에 따라서 자신만의 프로퍼티를 가지고 있습니다.
이것은 엘리먼트의 성격에 따라서 달라집니다.
HTMLElement는 Element의 자식이고 Element는 Node의 자식이고, 또 Node는 Object의 자식입니다.
이러한 관계를 DOM Tree라고 합니다.
이 관계를 그림으로 나타내면 아래와 같습니다.
위의 사진을 보고 DOM 이나 DOM Tree 같은 단위의 의미를 제대로 이해할수있을것같습니다.
SUA 정보보안 멘토링에 참여하고 있습니다.
'SUA 정보보안 > JavaScript' 카테고리의 다른 글
[ JavaScript ] jQuery 객체 , 체이닝 , jQuery 객체 API (0) | 2021.02.08 |
---|---|
[ JavaScript ] JS HTMLCollection (0) | 2021.02.08 |
[ JavaScript ] JS 제어 대상 찾기 : 제이쿼리(jQuery) (0) | 2021.02.07 |
[ JavaScript ] JS 제어대상 찾기 querySelector , querySelectorAll (0) | 2021.02.07 |
[ JavaScript ] JS 제어대상 찾기 getElementById ,getElementsByTagName,getElementsByClassName (0) | 2021.02.07 |