JavaScript/DOM

속성(Attribute)와 프러퍼티(Property)

yunajoe 2022. 11. 21. 18:57

- 속성 — HTML 안에 쓰임
- 프로퍼티 — DOM 객체 안에 쓰임 

 

 

- 브라우저(browser)는 웹페이지를 만나면 HTML을 읽어(파싱(parsing)) DOM 객체를 생성한다

(즉, 브라우저(browser)가 HTML문서를 해석할 때 DOM객체가 만들어진다) 

- HTML태그들이 가지고 있는 속성들은 요소노드의 프로퍼티(property)가 된다 

- 하지만 모든 속성들의 요소들의 프로퍼티(property)가 되지는 않는다 

 

 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>JS with Codeit</title>
</head>
<body>
  <div>
    <h1>오늘 할 일</h1>
		<ol id="today">
      <li class="item">자바스크립트 공부</li>
			<li class="item">고양이 화장실 청소</li>
			<li class="item">고양이 장난감 쇼핑</li>
		</ol>
		<h1>내일 할 일</h1>
    <ol id="tomorrow" href="https://www.codeit.kr">
      <li class="item"><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript">자바스크립트 공부</a></li>
			<li class="item">뮤지컬 공연 예매</li>
			<li class="item">유튜브 시청</li>
		</ol>
  </div>
  <script src="index.js"></script>
</body>
</html>
// HTML 속성 (HTML attribute)
const tomorrow = document.querySelector('#tomorrow');
const item = tomorrow.firstElementChild;
const link = item.firstElementChild;




// id속성 
console.log(tomorrow); // <ol id="tomorrow" href="https://www.codeit.kr">... </ol>  
console.log(tomorrow.id); // tomorrow



// class 속성 
console.log(item);  //  <li class="item"><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript">자바스크립트 공부</a.....</li>
console.log(item.className);  // item


// href속성 
console.log(link); // <a href="https://developer.mozilla.org/ko/docs/Web/JavaScript">자바스크립트 공부</a>
console.log(link.href);  // https://developer.mozilla.org/ko/docs/Web/JavaScript


console.log(tomorrow.href);  // undefined !! 왜냐하면은?! ==> ol태그와 href속성은 표준속성이 아니기 때문이다

 

HTML태그가 표준 속성이 아닌(비표준 속성) 경우에는 어떻게 접근할까?!

- 아래의 메서드를 사용하면은 표준, 비표준 관계없이 접근할 수 있다 속성과 함께 쓰이는 메서드

-  name, 즉 속성 이름들은 대소문자를 구분하지 않는다.

- elem.hasAttribute(name) — 속성 존재 여부 확인
- elem.getAttribute(name) — 속성값을 가져옴
- elem.setAttribute(name, value) — 속성값을 변경함
- elem.removeAttribute(name) — 속성값을 제거함
- elem.attributes 은 속성의 모음(collection)을 반환함

 

console.log(tomorrow.getAttribute('href'));  // 비표준속성(ol태그 href속성)  https://www.codeit.kr
console.log(link.getAttribute('href'));  // 표준(a태그 href속성) https://developer.mozilla.org/ko/docs/Web/JavaScript
console.log(item.getAttribute('class'));

 

 

tomorrow.setAttribute('class', 'days_list'); // class="days_list" 를 추가 해준다
link.setAttribute('href', 'https://www.google.com')  // https://developer.mozilla.org/ko/docs/Web/JavaScript => https://www.google.com로 변

 

tomorrow.removeAttribute('href'); 
tomorrow.removeAttribute('class');