Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ์๋ฐ
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ํ์ด์ฌ
- Python
- css
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ปดํจํฐ๊ณผํ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฆฌ์กํธ
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ComputerScience
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- K๋ฐฐํฐ๋ฆฌ
- JavaScript
- ์ํ
- ํ๋ก๊ทธ๋๋ฐ
- ๊ฐ๋ฐ
- database
- html
- ์ค๋ผํด
- ๋ ์
- ์ค๋ธ์
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- Java
- ์ฑ
- ๋ฐ์ํ
- ์นํผ๋ธ๋ฆฌ์ฑ
- ์ฝ๋ฉ
- ๋ผํ๋ผ์ค์๋ง๋
Archives
- Today
- Total
JiYoung Dev ๐ฅ
javascript DOM ์์์ ์ ํ ๋ฐ input, style, img ๋ณ๊ฒฝ (2023.05.02) ๋ณธ๋ฌธ
full stack/JavaScript
javascript DOM ์์์ ์ ํ ๋ฐ input, style, img ๋ณ๊ฒฝ (2023.05.02)
Shinjio 2023. 5. 2. 14:57๐ ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ๋ฐ์ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
input, select, textarea ๊ฐ์ด ์ ๋ ฅ๋ฐ์ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋ value ์์ฑ์ ์ฌ์ฉํด์ผ ํจ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>input</title>
</head>
<body>
<input type="text" id="inputTag">
<button onclick="getInput()">ํด๋ฆญ</button>
<script>
// ๋ฒํผ ํด๋ฆญ์, input ์์ ์์ฑ๋ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ
const getInput = ()=>{
let inputVal = document.getElementById('inputTag');
// input, select, textarea์ ๊ฐ์ด ์
๋ ฅ๊ฐ์ ๋ฐ์์ค๋ ํ๊ทธ -> value ์์ฑ์ผ๋ก ์ ๊ทผ!!
// innerText๋ ์์ํ๊ทธ์ ๋ํ๊ทธ ์ฌ์ด์ ์ฝํ
์ธ ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ
alert(inputVal.value);
console.log(inputVal.innerText);
}
</script>
</body>
</html>
innerTEXT๋ก๋ ๊ฐ์ ๋ฐ์ ์ฌ ์ ์์
why? innerTEXT๋ ์์ํ๊ทธ์ ๋ํ๊ทธ ์ฌ์ด์ ์ฝํ ์ธ ๋ฅผ ๋ฐ์์ค๋ ๊ฒ์ด๋ฏ๋ก
๐ input ์ค์ต
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>input Practice</title>
</head>
<body>
<h1>์
๋ ฅํ ๊ฐ์ h1ํ๊ทธ๋ก ์ถ๋ ฅํด๋ณด๊ธฐ</h1>
<input type="text" id="inputTag">
<button onclick="print()">h1ํ๊ทธ ์ถ๋ ฅ</button>
<!-- ์
๋ ฅํ ๋ด์ฉ์ด h1ํ๊ทธ๋ก ์ถ๋ ฅ๋ ๊ณต๊ฐ -->
<div id="divTag"></div>
<script>
// ๋ฒํผ ํด๋ฆญ ์ ์
๋ ฅํ ๋ด์ฉ์ด h1 ํ๊ทธ๋ก ์ถ๋ ฅ!!
const print = ()=>{
// 1. input ์์ ๊ฐ์ ธ์ค๊ธฐ => ๋ณ์์ ์ ์ฅ
let inputVal = document.getElementById('inputTag');
// 2. h1ํ๊ทธ๋ก ์ถ๋ ฅํ๊ธฐ
// 2-1. ์ถ๋ ฅํ ๊ณต๊ฐ ๊ฐ์ ธ์ค๊ธฐ
// 2-2. h1ํ๊ทธ ๊ธฐ๋ฅ์ ๋ฃ์ด์ ๊ฐ ์ ๋ฌํ๊ธฐ
document.getElementById('divTag').innerHTML += `<h1>${inputVal.value}</h1>`;
// 3. input ํ๊ทธ ์ ๋น์์ฃผ๊ธฐ!
inputVal.value = '';
}
</script>
</body>
</html>
Question. ๋ณ์์ .value ์์ฑ ์ถ๊ฐ์ ๋ฐ์ํ๋ ๋ฌธ์
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>input Practice</title>
</head>
<body>
<h1>์
๋ ฅํ ๊ฐ์ h1ํ๊ทธ๋ก ์ถ๋ ฅํด๋ณด๊ธฐ</h1>
<input type="text" id="inputTag">
<button onclick="print()">h1ํ๊ทธ ์ถ๋ ฅ</button>
<!-- ์
๋ ฅํ ๋ด์ฉ์ด h1ํ๊ทธ๋ก ์ถ๋ ฅ๋ ๊ณต๊ฐ -->
<div id="divTag"></div>
<script>
// ๋ฒํผ ํด๋ฆญ ์ ์
๋ ฅํ ๋ด์ฉ์ด h1 ํ๊ทธ๋ก ์ถ๋ ฅ!!
const print = ()=>{
// 1. input ์์ ๊ฐ์ ธ์ค๊ธฐ => ๋ณ์์ ์ ์ฅ
let inputVal = document.getElementById('inputTag').value;
// 2. h1ํ๊ทธ๋ก ์ถ๋ ฅํ๊ธฐ
// 2-1. ์ถ๋ ฅํ ๊ณต๊ฐ ๊ฐ์ ธ์ค๊ธฐ
// 2-2. h1ํ๊ทธ ๊ธฐ๋ฅ์ ๋ฃ์ด์ ๊ฐ ์ ๋ฌํ๊ธฐ
document.getElementById('divTag').innerHTML += `<h1>${inputVal}</h1>`;
// 3. input ํ๊ทธ ์ ๋น์์ฃผ๊ธฐ!
inputVal = '';
}
</script>
</body>
</html>
let inputVal = document.getElementById('inputTag').value;
์์ ๊ฐ์ด ๋ณ์ ์ง์ ์
inputVal = '';
์ ๋๋ก ์๋ํ์ง ์์
inputVal์ ํ ๋น๋ ๊ฐ์ ํด๋น ์์์ ํ์ฌ ๊ฐ์ ๋ณต์ฌํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ดํ์ inputVal ๋ณ์์ ๋น ๋ฌธ์์ด์ ํ ๋นํด๋, ์๋ ์์์ ๊ฐ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
document.getElementById('inputTag').value๋ 'inputTag'๋ผ๋ ID๋ฅผ ๊ฐ์ง ์์์ value ํ๋กํผํฐ ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ด value ํ๋กํผํฐ๋ ํด๋น ์์์ ํ์ฌ ๊ฐ(value)์ ๋ํ๋ ๋๋ค.
๊ทธ๋์ inputVal ๋ณ์์ ํ ๋น๋ ๊ฐ์ ํด๋น ์์์ ํ์ฌ ๊ฐ์ ๋ณต์ฌํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ง์ฝ 'inputTag' ์์๊ฐ <input type="text" id="inputTag" value="Hello World!">์ ๊ฐ์ด ์ ์ธ๋์ด ์๋ค๋ฉด, inputVal ๋ณ์์๋ "Hello World!"๋ผ๋ ๋ฌธ์์ด์ด ํ ๋น๋ฉ๋๋ค.
์ดํ์ inputVal์ ๋น ๋ฌธ์์ด์ ํ ๋นํ๋๋ผ๋, ์ด๋ inputVal ๋ณ์์ ํ ๋น๋ ๋ฌธ์์ด ๊ฐ๋ง์ ๋ณ๊ฒฝํ ๋ฟ, ์ค์ HTML ๋ฌธ์ ๋ด์ 'inputTag' ์์์ ๊ฐ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
๋ฐ๋ผ์, inputVal ๋ณ์์ ํ ๋น๋ ํ์ฌ ๊ฐ์ ๋ณ๊ฒฝํ๋๋ผ๋, ์ด๋ ๋จ์ง ๋ณ์ ๋ด์ ๊ฐ๋ง ๋ณ๊ฒฝํ ๋ฟ, HTML ๋ฌธ์ ๋ด์ ์์์ ๊ฐ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ์ด ์ ์ ์ ์ํ์ฌ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
์์ ์ ๊ทผ ์์ฑ
๐ Element ์คํ์ผ(style) ๋ณ๊ฒฝ
๐ ์์ ์กฐํ
// span ์์ ๊ฐ์ ธ์ค๊ธฐ
// (1) getElement~
let getSpan1 = document.getElementById('spanTag');
console.log(getSpan1);
let getSpan2 = document.getElementsByTagName('span');
// getElements => HTMLCollection์ผ๋ก ๋ฐฐ์ด๋ก ๋ฐํ => index ๋ฒํธ๋ฅผ ํตํด ์ ๊ทผ
console.log(getSpan2[0]);
// (2) quearySelector~
// (2-1) ํ๊ทธ ์ ํ์
let selectSpan1 = document.querySelector('span');
console.log(selectSpan1);
// (2-2) ์์ด๋ ์ ํ์
let selectSpan2 = document.querySelector('#spanTag');
console.log(selectSpan2);
const clickFunc = ()=>{
// querySelector : CSS ์ ํ์๋ก ์์๋ฅผ ๊ฒ์
// querySelectorAll : CSS ์ ํ์๋ก ๋ชจ๋ ์์ ๊ฒ์
// DOM ์คํ์ผ ์ ์ด
// ์์.style.์์ฑ = ๊ฐ
// ๊ธ์ํฌ๊ธฐ 25px
getSpan1.style.fontSize = '25px';
// ๊ธ์์์ ํ ๋งํ
getSpan1.style.color = 'tomato';
// ๊ธ์๊ตต๊ธฐ 900
getSpan1.style.fontWeight = '900';
}
// ์ด๋ํ๊ธฐ ๋ฒํผ ํด๋ฆญ์
// ๋ฐ์ค๋ค์ด ๊ณ๋จ ํํ๋ก ์ด๋
// ๋ฅ๊ธ๊ฒ ๋ฒํผ ํด๋ฆญ์
// ์ค๋ฅธ์ชฝ ์, ์ผ์ชฝ ์๋ ๋ชจ์๋ฆฌ ๋ฅ๊ธ๊ฒ
// ๋ฐฐ์ด ํํ๋ก ์์ ์ ์ฒด ๊ฐ์ ธ์ค๊ธฐ → querySelectAll
let box = document.querySelectorAll('.box');
// ์ ์ฌ ๋ฐฐ์ด๋ก ๋์ด์ค๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค ๋ฒํธ๋ก ์ ๊ทผํด์ค์ผ ํจ
let blueBox = document.querySelector('#blue');
let greenBox = document.querySelector('#green');
let grayBox = document.querySelector('#gray');
const moveFunc = ()=>{
blueBox.style.marginLeft = '100px';
greenBox.style.marginLeft = '200px';
grayBox.style.marginLeft = '300px';
}
const roundFunc = ()=>{
// ๋ฐฉ๋ฒ1) for of ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ
for(let i of box){
i.style.borderTopRightRadius = '50%';
i.style.borderBottomLeftRadius = '50%';
}
// forEach ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ
// querySelectAll => return ํ์
์ด nodeList (๋ฆฌ์คํธ์ด๋ฏ๋ก forEach ์ฌ์ฉ ๊ฐ๋ฅ)
// getElementsByTagName => return ํ์
์ด HTMLCollection (ํจ์ ์ฌ์ฉ ๋ถ๊ฐ)
box.forEach(element => {
element.style.borderTopRightRadius = '50%';
element.style.borderBottomLeftRadius = '50%';
})
}
โ NodeList์ HTMLCollection์ ์ฐจ์ด
HTMLCollection๊ณผ NodeList๋ ๋ ๋ค HTML ๋ฌธ์ ๋ด์ ์์๋ค์ ๋ด๊ณ ์๋ ์ปฌ๋ ์ ๊ฐ์ฒด์ ๋๋ค. ํ์ง๋ง, ์ด ๋์ ๋ช ๊ฐ์ง ์ฐจ์ด์ ์ด ์์ต๋๋ค.
์ฒซ์งธ, ๋ ธ๋ ํ์ ์ ์ฐจ์ด์ ์ ๋๋ค.
HTMLCollection์ HTML ๋ฌธ์ ๋ด์์ ์์(element)๋ค๋ง์, NodeList๋ HTML ๋ฌธ์ ๋ด์์ ์์๋ฟ๋ง ์๋๋ผ ํ ์คํธ ๋ ธ๋(text node), ์ฃผ์ ๋ ธ๋(comment node), ์์ฑ(attribute) ๋ฑ ๋ชจ๋ ๋ ธ๋ ํ์ (node type)์ ํฌํจํฉ๋๋ค.
๋์งธ, ์ ๋ฐ์ดํธ ๋ฐฉ์์ ์ฐจ์ด์ ์ ๋๋ค.
HTMLCollection์ ๋์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ฉฐ, DOM์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค. NodeList๋ ์ ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ฉฐ, NodeList ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋์ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
์ ์งธ, ์๋์ ์ฐจ์ด์ ์ ๋๋ค.
NodeList๋ ์ง์ ๋ฐ๋ณต(iteration)์ด ๊ฐ๋ฅํ๋ฏ๋ก, ์๋๊ฐ HTMLCollection๋ณด๋ค ๋น ๋ฆ ๋๋ค. ๊ทธ๋ฌ๋, HTMLCollection์ ๋ผ์ด๋ธ(live) ๊ฐ์ฒด์ด๋ฏ๋ก ๋ณ๊ฒฝ๋ DOM์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ๊ธฐ ๋๋ฌธ์, ์ํฉ์ ๋ฐ๋ผ ์ ์ฉํ ์ ์์ต๋๋ค.
๋ท์งธ, ํน์ฑ์ ์ฐจ์ด์ ์ ๋๋ค.
HTMLCollection์ item() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ฐธ์กฐํฉ๋๋ค. NodeList๋ ๋ฐฐ์ด๊ณผ ์ ์ฌํ๊ฒ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ๋ํ, NodeList๋ forEach() ๋ฉ์๋๋ฅผ ์ง์ํ์ฌ ๋ฐ๋ณต(iteration)์ ๋์ฑ ํธ๋ฆฌํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์์ฝํ์๋ฉด, HTMLCollection์ ์ ๋ฐ์ดํธ๊ฐ ๋ผ์ด๋ธ(live)๋๋ฉฐ ์์๋ง์ ํฌํจํ๊ณ , NodeList๋ ์ ๋ฐ์ดํธ๊ฐ ์ ์ (static)์ด๋ฉฐ ๋ชจ๋ ๋ ธ๋ ํ์ ์ ํฌํจํฉ๋๋ค. ๋ฐ๋ผ์ ์ํฉ์ ๋ง๊ฒ ์ ํํ์ฌ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๐ ์ด๋ฏธ์ง ์์ฑ ๋ณ๊ฒฝ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>img Practice</title>
</head>
<body>
<img src="https://i.ytimg.com/vi/chdsfO4Db1Q/maxresdefault.jpg" alt="" id="imgId" class="imgClass">
<br>
<button onclick="imgChange()">์ด๋ฏธ์ง ๋ณ๊ฒฝ</button>
<script>
// ๋ฒํผ ํด๋ฆญ์ ์ด๋ฏธ์ง ๋ณ๊ฒฝ!
// 1. ์ด๋ฏธ์ง ์์ ๊ฐ์ ธ์ค๊ธฐ
let imgVal = document.getElementById('imgId');
console.log(imgVal);
let imgVal2 = document.getElementsByClassName('imgClass')[0];
console.log(imgVal2);
let imgVal3 = document.querySelector('img');
console.log(imgVal3);
let imgVal4 = document.querySelector('#imgId');
console.log(imgVal4);
let imgVal5 = document.querySelector('.imgClass');
console.log(imgVal5);
let imgVal6 = document.querySelectorAll('img')[0];
console.log(imgVal6);
let imgVal7 = document.querySelectorAll('.imgClass')[0];
console.log(imgVal7);
// ์ด๋ฏธ์ง ์ฃผ์ ๋ณ์์ ๋ด๊ธฐ
let imgSrc1 = 'https://i.ytimg.com/vi/2lMngDTyFgM/maxresdefault.jpg';
let imgSrc2 = 'https://i.ytimg.com/vi/chdsfO4Db1Q/maxresdefault.jpg';
let sw = true;
const imgChange = ()=>{
// ๋ฐฉ๋ฒ 1) booleanํ์
sw ํ์ฉ
// if(sw){
// imgVal.src = 'https://i.ytimg.com/vi/2lMngDTyFgM/maxresdefault.jpg';
// sw = false;
// }else{
// imgVal.src = 'https://i.ytimg.com/vi/chdsfO4Db1Q/maxresdefault.jpg';
// sw = true;
// }
// ๋ฐฉ๋ฒ 2) ์ด๋ฏธ์ง ์ฃผ์ ํ์ฉ
// 1. img src๊ฐ 1๋ฒ ์ฃผ์๋ผ๋ฉด
// 2. src๋ฅผ 2๋ฒ ์ฃผ์๋ก
// 3. ์๋๋ผ๋ฉด 1๋ฒ ์ฃผ์๋ก.
if(imgVal.src == imgSrc1){
imgVal.src = imgSrc2
}else{
imgVal.src = imgSrc1;
}
}
</script>
</body>
</html>
'full stack > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
javascript ๋์ ์ด๋ฒคํธ, ๋น๋๊ธฐํต์ ajax (2023.05.04) (0) | 2023.05.04 |
---|---|
javascript CallBack ํจ์ & jQuery (2023.05.03) (0) | 2023.05.03 |
javascript DOM (2023.05.01) (0) | 2023.05.01 |
javascript ๊ฐ์ฒด(Object) (2023.04.28) (1) | 2023.04.29 |
javascript ๋ฐฐ์ด ์ค์ต, ํจ์ (2023.04.27) (0) | 2023.04.27 |