별초롱언니 2025. 4. 11. 14:10

HTML DOM 객체 

HTML Dom에서 document 객체는 웹페이지에 있는 모든 객체의 소유자라고 생각하면 된다. 

즉, document 객체는 웹페이지를 의미한다. 

HTML 페이지의 요소에 접근하려면 항상 document 객체에 접근해야 가능하다 .

 

HTML 요소 찾는 메서드 (get)

메서드 설명
document.getElementById(id) 해당 id값의 요소 찾기
document.getElementByTagName(name) 해당 name값의 요소 찾기
document.getElementByClassName(name) 해당 class값의 요소 찾기
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>getElementsByTagName</title>
</head>
<body>
  <p>Hello World!</p>
  <p>The DOM is very useful.</p>
  <p>This example demonstrates the <b>getElementsByTagName</b>method</p>
  <p id="demo"></p>

  <script>
    let x = document.getElementsByTagName("p");
    document.getElementById("demo").innerHTML = 'The first paragraph (index 0) : '
    + x[0].innerHTML;
  </script>
</body>
</html>


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>내부요소_getElementsByTagName</title>
</head>
<body>
  <p>Hello World!</p>
  <div id="main">
    <p>The DOM is very useful.</p>
    <p>This example demonstrates the <b>getElementsByTagName</b>method</p>
  </div>
  <p id="demo"></p>

  <script>
    // EventTarget - Node - Document, Element, Text, Commnet, ... 
    // 빵공장      - 베이스반죽 - 소금빵 반죽, 피자빵 반죽, 롤케이크빵 반죽, ... 
    let x = document.getElementById("main");
    // HTMLElement 반환 -> getElementsByTagName();
    // x = div#main;
    let y0 = document.getElementsByTagName("p");
    let y = x.getElementsByTagName("p");
    document.getElementById("demo").innerHTML = y[0].innerHTML;
  </script>
</body>
</html>


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h1 class="intro">Hello World!</h1>
  <p class="intro">The DOM is very useful.</p>
  <p class="intro">This example demonstrates the <b>getElementsByTagName</b>method</p>
  <p id="demo"></p>

  <script>
    let x = document.getElementsByClassName("intro");
    document.getElementById("demo").innerHTML = x[0].innerHTML;
  </script>
</body>
</html>


HTML 요소 찾는 메서드 (querySelector)

메서드 설명
document.querySelectorAll(CSS선택자) CSS선택자에 해당하는 요소 찾기
document.querySelector(CSS선택자) CSS선택자에 해당하는 요소 찾기

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>querySelector</title>
</head>
<body>
  <h1 class="intro">Hello World!</h1>
  <p class="intro">The DOM is very useful.</p>
  <p class="intro">This example demonstrates.</p>
  <p id="demo"></p>

  <script>
    let x = document.querySelectorAll("p.intro");
    document.getElementById("demo").innerHTML = x[0].innerHTML;
    x.forEach(function(value,index) {
      document.querySelector("#demo").innerHTML += value.innerHTML;
    }
  )
  </script>
</body>
</html>

두 예제에서 class속성이 intro값을 가진 요소를 선택했으나 마지막 출력문이 다르다.

querySelectorAll()에서는 태그가 <p>인 경우에 class="tntro"만을 선택한 것이다. 


HTML Object Collections 

Object Collections을  form[], anchors[], layers[], images[]가 있다.

이들은 문서 내에 여러개가 존재하면 마치 배열처럼 각 객체에 접근한다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <form id="fm1">
    <input type="text" name="fname" value="Donald"><br>
    <input type="text" name="lname" value="Duck"><br>
    <input type="submit" value="Submit">
  </form>

  <form id="fm2">
    <input type="text" name="fname" value="Donald2"><br>
    <input type="text" name="lname" value="Duck2"><br>
    <input type="submit" value="Submit2">
  </form>

  <p>form elements</p>
  <button onclick="myFunction()">Try it</button>
  <p id="demo"></p>

  <script>
    function myFunction() {
      let x = document.forms[1];
      let text = "";
      let i;
      for (i = 0; i < x.length; i++) {
        text += x.elements[i].value + "<br>";
      }
      document.getElementById("demo").innerHTML = text;
    }
  </script>
</body>
</html>

try it 버튼 눌렀을때 value 확인

이는 태그나 id 등에 의해 접근하지 않고 배열로 접근 가능하게 만든다.