๊ด€๋ฆฌ ๋ฉ”๋‰ด

bom's happy life

[JS] className ์†์„ฑ / getElementsByClassName๋ฉ”์„œ๋“œ ๋ณธ๋ฌธ

Deveolpment Study๐Ÿ—‚๏ธ/Javascript

[JS] className ์†์„ฑ / getElementsByClassName๋ฉ”์„œ๋“œ

bompeach 2023. 6. 3. 16:01

1. className ์†์„ฑ(property)

- `className `์€ DOM ์š”์†Œ์˜ ํด๋ž˜์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์†์„ฑ์ด๋‹ค.

- ์š”์†Œ์˜ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- ์˜ˆ๋ฅผ ๋“ค์–ด, <p> ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ์˜ className ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ค๊ณ  ๋ณ€๊ฒฝํ•œ๋‹ค. ์ดˆ๊ธฐ ์ƒํƒœ์—์„œ <p> ์š”์†Œ์—๋Š” "my-class"๋ผ๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์ด ์žˆ๋‹ค. className ์†์„ฑ์„ ํ†ตํ•ด ํ•ด๋‹น ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜จ ํ›„, element.className = "new-class"์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค ์ด๋ฆ„์„ "new-class"๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. ๋ณ€๊ฒฝ๋œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ console.log(element.className)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค. -> ๊ฐ’ : `new-class`

 

์‚ฌ์šฉ ์˜ˆ์‹œ 

<body>

    <p id="demo" class="my-class">Hello, World!</p>

    <script>
    // ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ
    var element = document.getElementById("demo");

    // className ์†์„ฑ ์‚ฌ์šฉํ•˜๊ธฐ
    console.log(element.className); // "my-class"

    // className ์†์„ฑ ๋ณ€๊ฒฝํ•˜๊ธฐ
    element.className = "new-class";

    // ๋ณ€๊ฒฝ๋œ className ํ™•์ธํ•˜๊ธฐ
    console.log(element.className); // "new-class"
    </script>
    
</body>

 

 


 

 

 

2. getElementsByClassName ๋ฉ”์„œ๋“œ(method)

- `getElementsByClassName ` ์€ Document ๋˜๋Š” Element ์ธํ„ฐํŽ˜์ด์Šค์— ์†ํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค.

- DOM์—์„œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.

- ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง„ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- ์ด ๊ฐ์ฒด๋Š” ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ณ„ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ‘์˜ ์˜ˆ์‹œ์—์„œ๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์ด "my-class"์ธ <div> ์š”์†Œ๋“ค์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด getElementsByClassName("my-class")๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐ˜ํ™˜๋œ ์š”์†Œ๋“ค์€ HTMLCollection์œผ๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ for ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜ํ™˜๋œ ์š”์†Œ๋“ค์— ์ ‘๊ทผํ•˜๊ณ , ๊ฐ ์š”์†Œ์˜ textContent๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์ด "my-class"์ธ 3๊ฐœ์˜ <div> ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฉฐ, for ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์š”์†Œ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” "Element 1", "Element 2", "Element 3" ๊ฐ€ ๋œ๋‹ค.

 

์‚ฌ์šฉ ์˜ˆ์‹œ

<body>

<div class="my-class">Element 1</div>
<div class="my-class">Element 2</div>
<div class="my-class">Element 3</div>

<script>
// ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ์š”์†Œ ์„ ํƒํ•˜๊ธฐ
var elements = document.getElementsByClassName("my-class");

// ๋ฐ˜ํ™˜๋œ ์š”์†Œ๋“ค์— ์ ‘๊ทผํ•˜๊ธฐ
for (var i = 0; i < elements.length; i++) {
  var element = elements[i];
  console.log(element.textContent);
}
</script>

</body>

 

 

.

.

.

 

์ •๋ฆฌํ•˜์ž๋ฉด, `className` ์€ ์†์„ฑ(property)์œผ๋กœ์„œ ํŠน์ • ์š”์†Œ์˜ ํด๋ž˜์Šค๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ณ , `getElementsByClassName` ์€ ๋ฉ”์„œ๋“œ(method) ๋กœ์„œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์†Œ๋“ค์„ ์„ ํƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค!