Attribute와 Property

둘 다 요소의 상태나 특성을 나타내지만, 다음과 같은 차이점이 있다.

Attribute:

  • HTML 태그 내에 작성되는 것으로, 태그에 대한 추가 정보나 설정을 제공
  • 보통 문자열 형태로 작성된다. 예: <img src="image.jpg" alt="Image">
  • HTML 문서를 파싱할 때 DOM에 반영되며, JavaScript에서도 해당 Attribute 값을 가져올 수 있다.
  • JavaScript를 통해 Attribute 값을 수정해도 렌더링된 페이지에 반영되지 않을 수 있다. (DOM과의 일관성이 유지되지 않을 수 있음)
  • getAttribute() 함수를 사용하여 HTML 요소의 Attribute 값을 가져올 수 있다.

Property:

  • DOM(Document Object Model)을 통해 JavaScript로 접근 가능한 객체의 속성
  • HTML 요소에 대한 현재 상태를 나타낸다. 예: element.src, element.className
  • 해당 요소의 상태를 반영하므로 JavaScript를 통해 수정하면 화면에 반영된다.
  • Attribute와 일치하지 않을 수 있다. 예를 들어, <input> 요소의 value Property는 초기 HTML에 지정된 value Attribute와는 독립적으로 동작한다.
<input id="myInput" type="text" value="Initial Value" />
const inputElement = document.getElementById('myInput')
console.log(inputElement.getAttribute('value')) // "Initial Value"
console.log(inputElement.value) // "Initial Value"
 
inputElement.value = 'New Value' // Property를 수정하면 렌더링에 반영됨

요약

Attribute는 HTML 문서를 정의하고 초기화하는 데 사용되며, Property는 DOM을 통해 JavaScript로 상호작용할 때 사용된다. Property를 수정하면 화면에 바로 반영되지만, Attribute는 JavaScript에서 수정해도 화면에 즉시 반영되지 않을 수 있다.