[ JavaScript ] 자바스크립트 기본 문법 | HTMLElement

2021. 2. 7. 19:55·Archive/Develop
728x90
반응형

이미지 출처 :    https://commons.wikimedia.org/wiki/File:JavaScript-logo.png

 

 

 

 

 

 

해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다.

 

 

 


 

 

자바스크립트 기본 문법  ::  HTMLElement

 

 

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
  • HTMLAnchroElement
  • HTMLInputElement

 

 

 

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라고 합니다.

 

 

이 관계를 그림으로 나타내면 아래와 같습니다.

 

 

 

 

이미지 출처 : https://web.stanford.edu/class/cs98si/slides/the-document-object-model.html

 

 

 

 

 

DOM 이나 DOM Tree 같은 단위의 의미를 제대로 이해하지 못해서 어려움을 겪었었는데,

 

이번 포스팅을 작성하면서, 또 이번 파트 강의를 들으면서 이제야 알 것 같습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] 자바스크립트 기본 문법 | jQuery 객체 | jQuery API | jQuery map  (0) 2021.02.07
[ JavaScript ] 자바스크립트 기본 문법 | HTMLCollection  (0) 2021.02.07
[ JavaScript ] 제어 대상 찾기 - 제이쿼리(jQuery)  (0) 2021.02.07
[ JavaScript ] 제어 대상 찾기 - getElementById, getElementsByClassName, getElementsByTagName  (0) 2021.02.07
[ JavaScript ] 자바스크립트 기본 문법 | 창(window) 제어 | 팝업 차단  (0) 2021.02.07
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] 자바스크립트 기본 문법 | jQuery 객체 | jQuery API | jQuery map
  • [ JavaScript ] 자바스크립트 기본 문법 | HTMLCollection
  • [ JavaScript ] 제어 대상 찾기 - 제이쿼리(jQuery)
  • [ JavaScript ] 제어 대상 찾기 - getElementById, getElementsByClassName, getElementsByTagName
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    Codeup
    C++
    코드업 기초
    Oracle
    Git
    oracle db
    Django
    파이썬
    파이썬 기초
    백준 문제풀이
    파이썬 기초 문제
    javascript
    장고
    자바스크립트
    백준
    백준 파이썬
    코드업 파이썬 기초 100제
    카카오 100일 프로젝트
    파이썬 백준
    자바스크립트 API
    보안뉴스
    자바스크립트 객체
    파이썬 알고리즘
    파이썬 문제
    코드업
    오라클
    docker
    Python
    백준 풀이
    비박스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ JavaScript ] 자바스크립트 기본 문법 | HTMLElement
상단으로

티스토리툴바