DOM javaScriptMethod_계속 작성중

2008.10.24 02:46

juro 조회 수:361

● getElementById : 특정 아이디의 요소 노드에 직접 접근할 수 있음.
        document.getElementById("id")

● getElementsByTagName : 특정 태그를 사용하는 요소들을 배열로서 얻어낼 수 있음. getElementById가 하나의 요소를 얻는데 반해, getElementsByName은 여러 요소를 얻게 됨.
        element.getElementsByTagName("tag")

● getAttribute : 요소의 속성 값들을 알 수 있음. 문서 객체를 사용할 수 없음. 각 요소 노드 객체로만 사용 가능함.
        object.getAttribute(속성명)

<p>요소의 title 속성을 얻기 위해서는 getElementsByName과 함께 사용해야 함.
        var paras = document.getElementsByTagName("p");
        for (var i =o; i < paras.length, i++_{
                alert(paras[i].getAttribute("title"));
        }

● setAttribute : 특정 속성 노드의 값을 바꿀 수 있음. getAttribute처럼 메소드도 함수이고 요소 노드에서만 동작함. 다른 점은 인수를 두개 갖는 다는 점인데, 하나는 바꾸고 싶은 속성명이고 , 또 하나는 바꿀 값임.
        object.setAttribute(속성명,변경될값)

● childNodes 프로퍼티 : 문서 내 노드 트리에서 모든 요소의 자식에 대한 정보를 가져올 수 있는 방법임. 요소노드뿐 아니라 모든 형식의 노드를 포함하는 배열을 반환함.
        element.childNodes

● nodeType 프로퍼티 : 정확히 찾으려는 노드를 얻을 수 있음. 하지만 "요소"나 "속성"같은 문자열이 아니라 숫자를 반환해줌.

        node.nodeType
        alert(body_element.nodeType);

        요소노드의 nodeType 값은 1
        속성노드의 nodeType 값은 2
        텍스트노드의 nodeType 값은 3
        * 특정형식의 노드를 지정할 수 있으며, 이 노드에만 영향을 주는 함수를 만들 수 있음.

● nodeValue 프로퍼티 : 텍스트 노드의 값을 바꿀 수 있음. 또한 노드의 값을 가져오거나 설정할 수 있음.
        node.nodeValue

        *주의할 점: 실제 콘텐츠가 어떤 노드에 담겨져 있는지 정확히 파악해야함. 대상이 되는 노드에 있는지, 그 자식이 되는 노드에 있는지를 알아야함.
        alert(description(대상 노드명).childNodes[0].nodeValue);

● firstChild & lastChilde : 배열의 첫번째 자식노드와 마지막 자식노드에 대해 간단히 쓸 수 있는 방법이 있음.
        node.firstchild == node.childNodes[0]
        node.lastChild == node.childNodes[node.childNodes.length-1]

● createElement : 새 요소노드를 만들 수 있음. 하지만 요소노드를 만들었을뿐, 이것이 바로 노드트리에 연결되어 있지는 않다. 연결을 위해선 appendChild가 필요하다.
        document.createElement(nodeName)
        ex) document.createElement("p"); //문서에 p요소 노드를 추가함.

● appendChild : 새로만든 노드를 문서 트리 구조에 추가하는 가장 간단한 방법은 문서에 이미 존재하는 노드에 자식 노드로 추가하는 것이다. appendChild를 통해 새로 만든 노드를 문서에 추가할 수 있다.
        parent.appendChild(child)
        ex) var testdiv = document.getElementById("testdiv");
            var para = document.createElement("p");
            testdiv.appendChild(para);

● createTextNode : 새 텍스트 노드를 만들수 있음.
        document.createTextNode(test)
        ex) document.createTextNode("Hello world");

● nextSlibling : 타겟 요소 뒤에 있는 다음 노드를 지칭하는 프로퍼티





--------------------------------------------------
마크업이란?
마크업 언어는 문서에 포함된 문장, 표, 소리 등과 같은 문서의 내용에 대한 정보가 아니라  그 문장과 그림, 표가 어떻게 배치되고 글자는 어떤 크기와 모양을 가지며 , 들여쓰기와 줄간격, 여백은 어느정도인지에 대한 정보를 의미합니다.
마크업이라는 말자체가 글이나 책다위에서 표시를 하거나 한다는 듯이지요. --> 아마도 기본 코드작성을 의미하는 듯.

* typeof 연산자 : 요소의 속성을 알려줌.


--------------------------------------------------
사용하기 유용한 함수
● addLoadEvent : 멀티 온로드가 가능하도록 하는 함수
        fuction addLoadEvent (func) {
                var oldonload = window.onload;
                if (typeof window.onload != 'function') {
                        window.onload = func;
                } else {
                        window.onload = function() {
                                oldonload();
                        }
                }
        }

        addLoadEvent(firstFunction);
        addLoadEvent(secondFunction);

● insertAfter : 기존에 존재하는 요소 뒤에 새 요소를 삽입할 수 있도록 하는 함수 <-> insertBefore 라는 돔메소드의 반대개념
        function insertAfter(newElement, targetElement) {
                // 타겟 요소의 parentNode프로퍼티를 얻는 parent 변수
                var parent = targetElement.parentNode;
                // 타겟 요소가 부모의 마지막 자식인지 확인하기(타겟요소와 부모의 lastChild프로퍼티를 비교
                if (parent.lastChild == targetElement) {
                        //부모에 새 자식요소를 추가
                        parent.appendChild(newElement);
                } else {
                        //타겟요소뒤에 있는 다음 노드를 타깃으로하여 insertBefore 메소드 사용
                        parent.insertBefore(newElement, targetElement.nextSibling);
                }
        }

© juroweb 2003-2014. All rights reserved
log in