๋ด์ผ์์ ~
querySelector()
์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋์ผcss
* { margin: 0; padding: 0; }
body { background: #BDCDD6; }
body > div {
width: 400px;
margin: 150px auto;
padding: 2px;
text-align: center;
border: 1px solid #DF7857;
}
h1 { margin: 10px 0; }
h1 img { width: 150px; }
h2 { color:#737db6; margin-bottom: 30px; }
li {
list-style: none;
background: #6096B4;
color: #fff;
line-height: 50px;
margin: 2px;
padding-left: 20px;
}
.red { background: #E7AB9A; }
.orange { background: #f3be70; }
.sky { background: #93BFCF; }
.line { text-decoration: line-through; }
html
<div id="page">
<h1><img src="./img/kiwi_icon.png" alt="" /></h1>
<h2>๋ชจ๋ ์ ํ์ด ๊ฐ๋ฅ</h2>
<ul>
<li>ํฌ์นธ</li>
<li>์ค๋ฆฌ</li>
<li class="red">๋ณ์๋ฆฌ</li>
<li class="red">๋ญ</li>
<li class="red">ํค์์</li>
<li class="red">์ต๋ฌด์</li>
</ul>
</div>
js
const el1 = document.querySelector("li.red");
el1.classList.add("line");
// querySelector() - ๋ชจ๋ ์ ํ ๊ฐ๋ฅ(tag, id, class)
// ์ฌ๋ฌ๊ฐ ์์๋๋ ์ฒซ๋ฒ์งธ ๊ฒ๋ง ์ ํ
const el2 = document.querySelectorAll("li.red");
console.log(el2);
el2[1].style.backgroundColor = "yellowgreen";
for (let i = 0; i <= el2.length; i++) { // el2์ ๊ธธ์ด๋งํผ = class="red"์ ๊ฐฏ์๋งํผ = 3
el2[i].style.fontWeight = "bold";
el2[i].style.color = "yellow";
// el2[i].style.cssText = "font-weight: bold";
}
// style.cssText - css์์ ์ฌ์ฉํ๋ ์์ฑ๋ช
์ ๊ทธ๋๋ก ์ฌ์ฉ. ๋์ ๊ธฐ์กด์ ์ ์ฉ๋์ด ์๋ ๋ค๋ฅธ css๊ฐ ์ ๋ถ ์ง์์ง๊ณ ํด๋น style๋ง ๋จ์
Node.previousSibling
: Node์ ๋ฐ๋ก ์์ ์๋ ๋
ธ๋ ๋ฐํ.nextSibling
: Node์ ๋ฐ๋ก ๋ค์ ์๋ ๋
ธ๋ ๋ฐํcss
* { margin: 0; padding: 0; }
body { background: #BDCDD6; }
body > div {
width: 400px;
margin: 150px auto;
padding: 2px;
text-align: center;
border: 1px solid #DF7857;
}
h1 { margin: 10px 0; }
h1 img { width: 150px; }
h2 { color:#737db6; margin-bottom: 30px; }
li {
list-style: none;
background: #6096B4;
color: #fff;
line-height: 50px;
margin: 2px;
padding-left: 20px;
}
.red { background: #E7AB9A; }
.orange { background: #f3be70; }
.sky { background: #93BFCF; }
.line { text-decoration: line-through; }
html
<div id="page">
<h1><img src="./img/kiwi_icon.png" alt="" /></h1>
<h2>ํ์ ๊ด๊ณ ์ ํ์</h2>
<ul>
<li>ํฌ์นธ</li><li>์ค๋ฆฌ</li><li>๋ณ์๋ฆฌ</li><li id="three">๋ญ-START</li><li>ํค์์</li><li>์ต๋ฌด์</li>
</ul>
</div>
js
const elStart = document.getElementById("three");
const elPrev = elStart.previousSibling; // elStart์ ํ๋ ์์ ์๋ ์ ํ์
const elNext = elStart.nextSibling; // elStart์ ๋ฐ๋ก ๋ค์์ ์๋ ์ ํ์
elPrev.className = "red";
elNext.classList.add("orange"); // enter ์น๋ฉด ์ ์ฉโ, ํ ์ค๋ก ์ฝ๋๋ฅผ ์์ฑํด์ผ ์ ์ฉโญ
css
* { margin: 0; padding: 0; }
body { background: #BDCDD6; }
body > div {
width: 400px;
margin: 150px auto;
padding: 2px;
text-align: center;
border: 1px solid #DF7857;
}
h1 { margin: 10px 0; }
h1 img { width: 150px; }
h2 { color:#737db6; margin-bottom: 30px; }
li {
list-style: none;
background: #6096B4;
color: #fff;
line-height: 50px;
margin: 2px;
padding-left: 20px;
}
.red { background: #E7AB9A; }
.orange { background: #f3be70; }
.sky { background: #93BFCF; }
.purple { background: #d49dd4; color: yellow; }
.line { text-decoration: line-through; }
.check {
background: #fff url("../img/check-mark.png") no-repeat 90% 50% / 25px;
color: red;
}
html
<div id="page">
<h1><img src="./img/kiwi_icon.png" alt="" /></h1>
<h2>childNodes, children<span>ใ
ใ
</span></h2>
<ul>
<!-- ์ฃผ์์
๋๋ค -->
<li>ํฌ์นธ</li>
<li>์ค๋ฆฌ</li>
<li>๋ณ์๋ฆฌ</li>
<li>๋ญ</li>
<li>ํค์์</li>
<li>์ต๋ฌด์</li>
</ul>
<ul><li
>๋ ๋ฒ์งธ ul ์์ - ํฌ์นธ</li
><li>์ค๋ฆฌ</li
><li class="red">๋ณ์๋ฆฌ</li
><li class="sky">๋ญ</li
><li>ํค์์</li
><li>์ต๋ฌด์</li
></ul>
</div>
js
const elStart = document.getElementsByTagName("ul")[1];
// getElementsByTagName() - ํญ์ ๋ฐฐ์ด๋ก ์ธ์
// ๋ฐฐ์ด์ index๋ฅผ ์ง์ ํด ์ฃผ์ด์ผ ํ๊ทธ์ ๋ด์ฉ์ ๊ฐ์ ธ์ด
const elFirst = elStart.firstChild; // ๋ ๋ฒ์งธ ul ์์ - ํฌ์นธ
const elLast = elStart.lastChild; // ์ต๋ฌด์
const elThird = elStart.childNodes[2]; // ๋ณ์๋ฆฌ
console.log("elStart.childNodes๋?", elStart.childNodes);
elFirst.classList.add("check");
elLast.classList.add("orange");
elThird.classList.add("line");
elThird.classList.replace("red", "purple");
/*
A.firstChild - A์ ์์ ๋
ธ๋๋ค ์ค ์ฒซ ๋ฒ์งธ
A.lastChild - A์ ์์ ๋
ธ๋๋ค ์ค ๋ง์ง๋ง
A.childNodes[n] - A์ ์์ ๋
ธ๋๋ค ์ค n ๋ฒ์งธ
A.classList.replace("b", "c") - A์ ํด๋์ค b๋ฅผ c๋ก ๋ฐ๊พผ๋ค
*/
const elStart2 = document.getElementsByTagName("ul")[0];
const elChildren = elStart2.children;
console.log("children์?", elChildren);
const elCh2 = elStart2.children[1];
elCh2.classList = "orange";
// const elFirstChild = elStart2.firstChild;
// console.log("elFirstChild", elFirstChild); // li๋ง ์ธ์ํ์ง ์์
// elFirstChild.classList.add("check"); //children ๊ณผ ๋ค๋ฆ Node
console.log("elStart2(์ฒซ ๋ฒ์งธ ul)์ ์์ ๊ฐฏ์๋?", elStart2.childNodes.length);
console.log("elStart2(์ฒซ ๋ฒ์งธ ul)์ ์์ ๊ฐฏ์๋?", elStart2.children.length);
const elPa = elStart2.parentNode;
console.log("elPa", elPa);
const h2 = document.getElementsByTagName("h2")[0];
console.log("h2์ ์์ ๋
ธ๋๊ฐ ์๋๊ฐ?", h2.hasChildNodes);
console.log("h2์ ์์ ๋
ธ๋๊ฐ ์๋๊ฐ?", h2.hasChildNodes()); // ์๊ดํธ ์์ฑ ์ boolean๊ฐ์ผ๋ก ๋ฐํ
/*
A.childNodes - A์ ๋ชจ๋ ์์ ๋
ธ๋ ๋ฐํ(์ํฐ, ์ฌ๋ฐฑ, ์ฃผ์ ๋ฑ์ ํฌํจ)
A.children - A์ ๋ชจ๋ ์์์์ ๋ฐํ(์ํฐ, ์ฌ๋ฐฑ, ์ฃผ์ ๋ฑ ์ ์ธ)
A.parentNode - A์ ๋ถ๋ชจ ๋
ธ๋
A.hasChildNodes() - A์ ์์ ๋
ธ๋๊ฐ ์๋์ง ์์๋ด
*/
css
* { margin: 0; padding: 0; }
body { background: #BDCDD6; }
body > div {
width: 400px;
margin: 150px auto;
padding: 2px;
text-align: center;
border: 1px solid #DF7857;
}
h1 { margin: 10px 0; }
h1 img { width: 150px; }
h2 { color:#737db6; margin-bottom: 30px; }
li {
list-style: none;
background: #6096B4;
color: #fff;
line-height: 50px;
margin: 2px;
padding-left: 20px;
}
.red { background: #E7AB9A; }
.sky { background: #93BFCF; }
}
html
<div id="page">
<h1><img src="./img/logo.png" alt="" /></h1>
<h2>nodeValue</h2>
<ul>
<li>ํฌ์นธ</li>
<li id="two">์ค๋ฆฌ</li>
<li>๋ณ์๋ฆฌ</li>
<li id="four" class="red">๋ญ</li>
<li class="sky">ํค์์</li>
<li>์ต๋ฌด์</li>
</ul>
</div>
js
let elText1 = two.nodeValue;
// let elText2 = two.children.nodeValue; // console.log(elText2); - undefined
let elText2 = two.firstChild.nodeValue; // ํ
์คํธ ์์๋ ์์ ๋
ธ๋๋ก ์ธ์
console.log(elText1); // null
console.log(elText2); // ์ค๋ฆฌ. // ํ
์คํธ ์์๋ ์์ ๋
ธ๋๋ก ์ธ์
two.firstChild.nodeValue = elText2.replace("์ค๋ฆฌ", "๋ถ์์ด");
let elText3 = four.firstChild.nodeValue;
// four.firstChild.nodeValue = elText3.replace("๋ญ", "์ค๋ชฉ๋์ด");
four.firstChild.nodeValue = "์ฌ๋นผ๋ฏธ"; // text ๋ถ๋ถ์ ํต์งธ๋ก ๋ณ๊ฒฝํจ ๊ณต๋ฐฑ์ผ๋ก ๋๋๋ฉด ํ
์คํธ ๋ด์ฉ์ด ์ฌ๋ผ์ง
/*
A.nodeValue - A์ ๋
ธ๋๊ฐ (ํ
์คํธ ์์)
A.replace("b", "c"); - ๋ฌธ์์ด A์ ์๋ b๋ฅผ c๋ก ๋ฐ๊พผ๋ค
*/