반응형
16. 속성 API
속성은 HTML에서 태그명만으로는 부족한 부가적인 정보라고 할 수 있다. 이 속성을 어떻게 제어하는가 알아보자.
속성을 제어하는 API는 아래와 같다. 각각의 기능은 이름을 통해서 충분히 유추할 수 있을 것이다.
- Element.getAttribute(name)
- Element.setAttribute(name, value)
- Element.hasAttribute(name);
- Element.removeAttribute(name);
<a id="target" href="http://opentutorials.org">opentutorials</a>
<script>
var t = document.getElementById('target');
console.log(t.getAttribute('href')); //http://opentutorials.org
t.setAttribute('title', 'opentutorials.org'); // title 속성의 값을 설정한다.
console.log(t.hasAttribute('title')); // true, title 속성의 존재여부를 확인한다.
t.removeAttribute('title'); // title 속성을 제거한다.
console.log(t.hasAttribute('title')); // false, title 속성의 존재여부를 확인한다.
</script>
1) 속성과 프로퍼티
모든 엘리먼트의 (HTML)속성은 (JavaScript 객체의) 속성과 프로퍼티로 제어가 가능하다. 예제를 보자.
<p id="target">
Hello world
</p>
<script>
var target = document.getElementById('target');
// attribute 방식
target.setAttribute('class', 'important');
// property 방식
target.className = 'important';
</script>
setAttribute('class', 'important')와 className = 'important'는 같은 결과를 만든다. 하지만 전자는 attribute 방식(속성이라고 부르겠다)이고 후자는 property 방식이다. property 방식은 좀 더 간편하고 속도도 빠르지만 실제 html 속성의 이름과 다른 이름을 갖는 경우가 있다. 그것은 자바스크립트의 이름 규칙 때문이다.
class |
className |
readonly |
readOnly |
rowspan |
rowSpan |
colspan |
colSpan |
usemap |
userMap |
frameborder |
frameBorder |
for |
htmlFor |
maxlength |
maxLength |
심지어 속성과 프로퍼티는 값이 다를수도 있다. 아래 코드를 실행한 결과는 속성과 프로퍼티의 값이 꼭 같은 것은 아니라는 것을 보여준다.
<a id="target" href="./demo1.html">ot</a>
<script>
//현재 웹페이지가 http://localhost/webjs/Element/attribute_api/demo3.html 일 때
var target = document.getElementById('target');
// http://localhost/webjs/Element/attribute_api/demo1.html (target.href 사용시)
console.log('target.href', target.href);
// ./demo1.html (target.getAttribute(“href”) 사용시)
console.log('target.getAttribute("href")', target.getAttribute("href"));
</script>
'프로그래밍 > 자바스크립트' 카테고리의 다른 글
생활코딩 javascript 정리 - Node 관계 API (0) | 2017.07.26 |
---|---|
생활코딩 javascript 정리 - Node 객체 (0) | 2017.07.24 |
생활코딩 javascript 정리 - jQuery 조회 범위 제한 (0) | 2017.07.23 |
생활코딩 javascript - jQuery 속성 제어 API (0) | 2017.07.22 |
생활코딩 javascript 정리 - 조회 API (0) | 2017.07.17 |
생활코딩 javascript 정리 - 식별자 API (0) | 2017.07.16 |
생활코딩 javascript 정리 - Element 객체 (0) | 2017.07.16 |
생활코딩 javascript 정리 - jQuery 객체 (0) | 2017.07.08 |