Document API / Element API

2023. 6. 20. 22:43Front/JS

1. Document API

1) 하나의 요소(Element) 선택 : id로 접근

- [window.]document.getElementById("Id명");

- 해당되는 id의 요소에 접근한다

2) 다중 요소 선택 : class, tag로 접근

- document.getElementsByClassName("")

- document.getElementsByTagName("")

- document.getElementsByName("")

- 결과물은 모두 배열 (결과물이 한 개이더라도 배열임)

3) form태그 선택 시 name속성의 값으로 선택

<body>
    <div id="d1"></div>
    <div class="d2"></div>
    <div class="d2" ></div>
    <form action="" name="frm">
        <input type="text" name="yId">
    </form>

    <script type="text/javascript">
        var d1 = document.getElementById("d1");
        var d2 = document.getElementsByClassName("d2"); //배열
        document.frm.yId.value="test";
    </script>
</body>
 

4) CSS Selector 사용

- document.querySelector("css selector") : 선택자에 걸리는 요소 중 첫번째 것만 가져옴

- document.querySelectorAll("css selector") : 선택자에 걸리는 모든 요소를 배열로 가져옴

<body>
    <button class="c2" id="btn1">BTN</button>
    <input type="button" class="c1" value="BTN3">
    <input type="button" class="c1" value="BTN4">
    <p></p>
    <p class="c2"></p>
    
    <script type="text/javascript">
        var btn1 = document.querySelector("#btn1");
        btn1.addEventListener("click", function(){
            alert("btn2");
        });
        
        var c1 = document.querySelector(".c1"); //c1은 배열X 첫번째 요소만 가지고 옴
        c1.addEventListener("click", function(){
            alert("btn!");
        });
        
        var p = document.querySelector("p"); //p는 배열X 첫번째 요소만 가지고 옴
        p.innerHTML = "안녕";
        
        var p2 = document.querySelector("p.c2");
        p2.style.backgroundColor="blue";
    </script>
</body>
<body>
    <button class="c1">BTN1</button>
    <button class="c1">BTN2</button>
    
    <script type="text/javascript">
        var c1 = ​document.querySelectorAll(".c1"); //c1은 배열
            for(i=0;i<c1.length;i++){
                c1[i].addEventListener("click",function(){
                    alert("짠");
                })
        	}
    </script>
</body>

 

 

2. Element API

1) innerText

- 선택한 Element 내의 모든 "TextNode"들의 내용을 담는 변수

- Element 안의 text에 접근

 

2) innerHTML

- 선택한 Element 내의 모든 "Element"들의 내용을 담는 변수

- Element 안의 HTML 코드에 접근, 가져오는 것은 태그 내의 text를 가져온다.

- 사용

var a = "변경할 내용";

document.getElementById("Id명").innerHTML = a ; //a의 내용을 접근한 요소에 넣음

<div id="result"> </div>

<script type="text/javascript">
    var age = window.prompt("나이를 입력하세요");
    var reslut = document.getElementById("result");
    result.innerHTML = '"<h1>"+age+"</h1>"' //넣은 문자열을 ""html코드로서"" 인식
</script>
 
<select>
    <option class="opt" selected ="selected">KT</option>
    <option class="opt">SKT</option>
    <option class="opt">LG</option>
</select>
<button id="btn"> CLICK </button>


<script type="text/javascript">
    var btn = document.getElementById("btn");
    btn.onclick = function() {
        var opt = document.getElementsByClassName("opt");
        for(i=0;i<opt.length;i++){
            if(opt[i].selected){
            alert(opt[i].innerHTML); //가져올 때는 HTML코드의 안에 있는 text를 가져옴
            break;
        }
    }
</script>​

 

3) Attribute 접근

- var 변수명 = document.getElementsById("아이디명");

- 속성명으로 접근

변수명.속성명 [= "변경될 값";]

- 메서드로 접근

변수명.getAttribute("가져올속성명");

변수명.setAttribute("속성명", "변경값");

<h1>성적입력</h1>
<p><input type="text" class="point"> </p>
<p><input type="text" class="point"> </p>
<p><input type="text" class="point"> </p>

<script type="text/javascript">
    var sub = ["국어", "수학", "영어"];
    var points = [];
    for(i=0;i<sub.length;i++){
        //points[i] = prompt(sub[i]+"성적을 입력하세요");
        points.push(prompt(sub[i]+"성적을 입력하세요"));
    }
    var ar = document.getElementsByClassName("point");

    for(i=0;i<sub.length;i++){
        //ar[i].value = points[i];
        ar[i].setAttribute("value", point[i]);
    }
</script>