Deeb
디비의 DB
Deeb
전체 방문자
오늘
어제
  • 분류 전체보기 (243)
    • Frontend (63)
      • HTML & CSS (27)
      • JavaScript (17)
      • jQuery (8)
      • React (6)
    • Backend (98)
      • Java (19)
      • JDBC (2)
      • Servlet & JSP (13)
      • Spring (17)
      • Project (0)
      • 개발 공부 (11)
      • 문제 풀이 (8)
      • Algorithm (1)
      • DataBase (0)
      • Oracle (18)
      • Error (8)
    • Knou (1)
    • Review (14)
    • TIL (33)
    • 삽질기록 (8)
    • deebtionary (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • js
  • 자바
  • 방통대
  • 기초
  • 배열
  • 정의
  • 정처기
  • alter
  • Java
  • 책
  • 방송대
  • 한빛미디어
  • 2학기
  • CLASS
  • For
  • 함수
  • 다형성
  • css
  • 후기
  • 공부
  • 삭제
  • HTML
  • GIT
  • DBMS
  • DB
  • 클래스
  • 에러
  • 서평단
  • 추천
  • 리액트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Deeb

디비의 DB

[Javascript] 요소접근방법
Frontend/JavaScript

[Javascript] 요소접근방법

2021. 11. 8. 17:08

요소접근방법

1. id로 요소 접근하기
document.getElementById("id 속성값");

2. class로 요소 접근하기
document.getElementsByClassName("클래스 속성값");

3. Tag Name으로 요소 접근하기
document.getElementsByTagName("태그명");

4. name으로 요소 접근하기
document.getElementsByName("name 속성값");

5. CSS 선택자를 이용하여 요소 접근하기
1) document.querySelector("css 선택자");
2)  document.querySelectorAll("css 선택자")

1. id로 요소 접근하기

document.getElementById("id 속성값");

: id가 일치하는 요소 하나만을 얻어온다

<h1>1. id로 요소 접근하기</h1>
<div class="area" id="div1"></div>
<button onclick="accessId();">클릭마다 배경색 변경</button>
// 1.id로 요소 접근하기
function accessId(){

    //id 속성값이 div1인 요소 얻어오기
    const div1 = document.getElementById("div1");

    // JS는 카멜 표기법을 사용 CSS에서는 background-color였음
    // #div1의 배경색을 얻어와 bgColor변수에 저장
    const bgColor = div1.style.backgroundColor;

    // JS에서는 문자열 비교시에도 비교연산자(==)를 사용한다.
    if(bgColor == "red"){
        div1.style.backgroundColor = "green";

    } else if(bgColor == "green"){
        div1.style.backgroundColor = "blue";
    } else{
        div1.style.backgroundColor = "red";
    }

}

2. class로 요소 접근하기

document.getElementsByClassName("클래스 속성값");

(같은 클래스를 가진 요소는 여러개가 있을 수 있으니 Elements)

: class가 일치하는 요소를 모두 얻어와 배열로 반환

 

<div class="area div2"></div>
<div class="area div2"></div>
<div class="area div2"></div>

<button onclick="accessClass();">배경색 변경하기</button>
//2. class로 요소 접근하기
function accessClass(){
    // class 속성값으로 div2를 가지는 요소를 모두 얻어와 배열로 저장
    const arr = document.getElementsByClassName("div2");

    console.log(arr); //console에서 배열인지 확인

    //각 배열 요소(== div 요소)
    arr[0].style.backgroundColor = "#F0844D";
    arr[1].style.backgroundColor = "#FA7150";
    arr[2].style.backgroundColor = "#E35B54";

    //각 배열 요소에 h1태그를 이용하여 자신의 이름 한글자씩 추가
    arr[0].innerHTML ="<h1>J</h1>"
    arr[1].innerHTML ="<h1>D</h1>"
    arr[2].innerHTML ="<h1>B</h1>"
}

 

div2요소 

 


3. Tag Name으로 요소 접근하기

document.getElementsByTagName("태그명");

: tag가 일치하는 요소를 모두 얻어와 배열로 반환

 

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>

<button onclick="accessTagName();">배경색 변경하기</button>
//3. Tag Name으로 요소 접근하기
function accessTagName(){
    const arr = document.getElementsByTagName("li");
    console.log(arr);
    for(let i =0; i<arr.length; i++){
        arr[i].style.backgroundColor = "rgb(152, 88," + (i*50+50) + ")";
    }
}

 

 

0~4까지의 인덱스로 얻어온다

 

색상을 지정하는 방법이 직접 색상명을 적거나 rgb 값을 직접 입력해도 된다.


4. name으로 요소 접근하기

document.getElementsByName("name 속성값");

: name이 일치하는 요소를 모두 얻어와 배열로 반환

 

<input type="checkbox" name="hobby" id="game" value="게임">
     <label for="game">게임</label>

     <input type="checkbox" name="hobby" id="music" value="음악감상">
     <label for="music">음악감상</label>

     <input type="checkbox" name="hobby" id="movie" value="게임">
     <label for="movie">영화감상</label>
     
     <br>
     
    <input type="checkbox" name="hobby" id="coding" value="코딩">
    <label for="coding">코딩</label>

    <input type="checkbox" name="hobby" id="exercise" value="운동">
    <label for="exercise">운동</label>

    <input type="checkbox" name="hobby" id="readbook" value="독서">
    <label for="readbook">독서</label>

     <div class="area" id="div4"></div>
     <button onclick="accessName();">확인하기</button>
//4. name으로 요소 접근하기
function accessName(){
    // #div4 얻어오기
    const div4 = document.getElementById("div4");

    //name 속성 값이 "hobby" 요소 모두 얻어오기
    const hobbyList = document.getElementsByName("hobby");
                                // ->JS에서 제공해주는게 아니라, 브라우저에서 제공해주는 함수이다
    
    div4.innerHTML = "";
    // hobby값이 얻어와지는지 console에서 확인

    console.log(hobbyList);


    let count = 0; //체크 개수 기록용 변수

    // 얻어 온 checkbox 중 체크된 요소 출력하기
    for(let i=0; i< hobbyList.length; i++) {
        
        if(hobbyList[i].checked) {
            //.checked : radio/ checkbox 요소에 체크가 되어있으면 true

            div4.innerHTML += hobbyList[i].value + " ";
            // .value : input요소의 값을 얻어온다
            // += : 이전 내용에 새로운 내용을 누적

            count++; //count 1 증가
        }
    }//for end

    div4.innerHTML +="<br><br>선택한 취미 개수: " +count;

}

class로 접근하면 HTMLCollection이라는 배열

 

이름으로 접근하면 NodeList라는 다른 객체로 배열은 아니지만 비슷하다.


5. CSS 선택자를 이용하여 요소 접근하기

1) document.querySelector("css 선택자");

: 여러 요소가 선택된 경우 첫 번째 요소만을 얻어온다.

2)  document.querySelectorAll("css 선택자")

: 선택된 요소를 전부 얻어온다.

<div class="area cls" id="div5"> test1 </div>
<div class="area cls"> test2 </div>
<div class="area cls"> test <span>3</span></div>

<button onclick="accessCss()">확인하기</button>


<hr>
<h1>input태그에 작성된 값 얻어오기</h1>
숫자 입력 : <input type="text" id="num1">
<button onclick="testFn();">확인하기</button>
//5. CSS선택자로 요소 선택하기 
function accessCss(){
    
    // #div5 선택
    const el1 = document.querySelector("#div5");
    el1.style.backgroundColor = "orange";

    // .cls 모두 선택
    const el2 = document.querySelectorAll(".cls");

    console.log(el2);

    //.cls 요소에 모두 글자색 파란색
    for(let i =0; i<el2.length; i++) {
        el2[i].style.color = "brown";
    }

    //span태그 선택
    //css에 적은 효과를 주석처리하고 실행해도 된다.
    const el3 = document.querySelector(".cls > span");
    el3.style.fontSize = "30px";
}

function testFn(){
    //#num1 input 요소에 작성된 값 얻어오기
    const num1 = document.getElementById("num1").value; //요소를 선택했는데 value로 그 안에 값 서택


    //input에 작성된 값은 모두 문자열!
    // ->Number(숫자 문자열) -> 숫자
    console.log(num1+100);
}

얘도nodelist

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Frontend > JavaScript' 카테고리의 다른 글

[Javascript] 07 이벤트, 이벤트리스너,이벤트핸들러 /인라인·고전·표준모델  (0) 2021.11.16
[Javascript] 문자열,숫자,형변환,연산자  (0) 2021.11.15
[Javascript] 변수 선언 , 자료형  (0) 2021.11.11
[Javascript] 데이터 입출력  (0) 2021.11.05
[Javascript] 1_개요, inline, internal, external  (0) 2021.11.04
    'Frontend/JavaScript' 카테고리의 다른 글
    • [Javascript] 문자열,숫자,형변환,연산자
    • [Javascript] 변수 선언 , 자료형
    • [Javascript] 데이터 입출력
    • [Javascript] 1_개요, inline, internal, external
    Deeb
    Deeb

    티스토리툴바