DOM의 메소드는 보통 이름을 보면 메소드의 특징을 잘 알 수 있다.
var ultraman_a = document.getElementById(ultraman);
라고 한다면 문서 내에서 ultraman이라는 id를 가진 element를 불러와서
ultraman_a 라는 객체에 저장시킨다는 뜻이다.
이처럼 getElementById 는 특정 아이디의 요소 노드에 직접 접근할 수 있는 메소드이다. 자바스크립트는 대소문자를 구분하기 때문에 사용할 때 대소문자 구분에 주의하여야 한다.
아래 예시 소스가 있다.
<doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>how can I get there</title>
<script type="text/javascript">
var purchases = document.getElementById("purchases");
alert(typeof purchases+"기타넣고싶은것")
</script>
</head>
<body>
<h1>how can I get there</h1>
<p title="i don't know">can you listen to me?</p>
<ul id="purchases">
<li>chew</li>
<li>milk</li>
<li>water</li>
</ul>
</body>
</html>
purchases라는 id명을 가진 요소노드를 불러와 purchases라는 객체를 만든다.
그리고 alert (typeof purchases); 에서 typeof 는 purchases라는 객체의 type을 가리키는 것이다. purchases는 객체이므로 object 라는 대화상자가 뜨게 될 것이다.
-------------------
getElementsByTagName은
getElementById 와 마찬가지로 요소노드에 접근하는 메소드이다.
다만 id명을 통해 접근하는 것이 아닌 요소노드의 태그명으로 접근하는 것이다.
var items = document.getElementsByTagName("li");
라고 하면 문서내의 <li> 태그들을 모두 불러와 items이라는 변수에 저장하게 된다. items 라는 변수는 물론 객체변수이고 만약에 문서내 <li> 태그들이 여러개라면 items라는 변수는 1차원 배열이 된다.
(items[0], items[1], items[2] ... 이런식으로...)
그렇기 때문에 위에 메소드명을 보면 Elements 라고 복수형으로 쓰여 있는 걸 알 수 있다.
(소스)
<script type"text/javascript
function Func0()
{var items = document.getElementsByTagName("li"); alert(items.length);}
window.onload = Func0;
</script>
문서내 <li>태그들을 모두 불러와 items라는 1차원 배열 객체형 변수를 생성해 저장하고 alert(items.length) 에서 그 배열 변수의 길이가 몇인지 대화상자를 띄워서 출력하라는 것이다. 배열변수의 길이는 곧 문서내 <li>태그의 갯수이다.
--------------------------
getAttribute 는 특정 요소노드 내에서 특정 한 속성값을 가져오는 메소드이다.
var para = document.getElementById("홍길동");
var title = para.getAttribute("title")
위의 소스를 보면
첫 번째 줄에는 "홍길동"이라는 id를 가진 요소노드를 불러와 para라는 객체를 만들어 저장하고
두 번째 줄에는 para내 객체에서 "title" 이라는 속성노드의 값을 title이라는 변수에 저장하는 것이다.
(소스)
function Func2() {
var paras =
document.getElementsByTagName("ul");
for (var i=0;i<paras.length
;i++ ) { alert(paras[i].getAttribute("id")); }
}
window.onload=Func2;
소스 설명을 하자면 문서내에서 <ul>태그들을 불러와 paras라는 변수에 저장하고 (만약 <ul>태그가 여러개면 paras는 1차원 배열 변수가 될 것이다.)
그렇게 생성된 paras[0..1..2...]라는 객체 변수들이 가진 속성노드 중 id가 가진 속성값을 for문을 이용해 대화상자를 띄워 출력시키라는 소스이다.
(<ul>태그가 여러개라면 대화상자가 갯수만큼 차례로 뜨게 될 것이다.)
--------------------------
앞의 강좌에서 getAttribute가 속성값을 불러오는 메소드였다면
setAttribute 메소드는 속성값을 변경시키는 메소드이다.
사용방법은 객체명.setAttribute("속성노드명", 새로운속성값); 이다.
(예) object.setAttribute("id", 속성값);
- object라는 객체의 id 라는 속성이 가진 값이 "속성값"으로 바뀌게 된다.
(소스)
function Func4() {
var list = document.getElementsByTagName("p");
for (var i=0;i<list.length ;i++ ) { list[i].setAttribute("title","Please
smile"); }
}
window.onload=Func4;
문서내에 <p>태그들을 불러와 list라는 1차원 배열 객체에 저장하고
for문을 이용해 list 객체의 "title"이라는 속성노드의 기존 속성값을 "please smile" 이라는 문자열 값으로 바꿔준다.
출처 : 주옥단편
'progarm_old > [HTML-JS]' 카테고리의 다른 글
MouseOver (0) | 2012.07.11 |
---|---|
객체, DOM, 노드에 대해서 (0) | 2012.07.11 |
금지단어 설정하기 (0) | 2012.06.21 |
urldecode/urlencode 디코더/인코더 (0) | 2012.06.05 |
colgroup 열 (0) | 2012.06.05 |