๐ TIL
[220506]๐ข callstack / DOM api
k_m_jin
2022. 5. 6. 23:06
์ฝ์คํ
setTimeout(() => {
console.log("timeout");
}, 1000);
function a() {
console.log("A");
function b() {
console.log("B");
}
b();
}
a();
ํ ๋ด์ ์์
micro 1
๋ธ๋ผ์ฐ์ ๋ง์ ๋ค๋ฆ
macro
Animation
DOM api
node vs element
- node
<div>
123
<span>abc</span>
</div>
- element
<div></div>
// qeuryselector ๋ ์์๋ฅผ ์ฐพ์
const divEl = document.querySelector("div");
// qeuryselectorAll ๋ nodelist ๋ผ๋ ๋ฐฐ์ด ๋ฐ์ดํฐ์ฒ๋ผ ์๊ธด ๊ฐ์ฒด๋ฅผ ์ฐพ์
//nodelist
// Object object
const divNodeList = document.querySelectorAll("div");
์์์์ ์ธ์์๋ ๋ฉ์๋
// qeuryselector ๋ ์์๋ฅผ ์ฐพ์
const divEl = document.querySelector("div");
console.log(divEl.id);
console.log(divEl.className);
console.log(divEl.classList.contains());
// add remove ํ์ธ(contains)
// ์ด์ง ํด๋์ค ์ ํ์๋ผ๋ ์ ์ ํ์ด๊ธฐ ๋๋ฌธ์ ์ ํ์ x
// contains ํด๋์ค ์ฌ๋ถ๋ฅผ boolean ์ผ๋ก ๋ฐํ
// qeuryselector ๋ ์์๋ฅผ ์ฐพ์
const divEl = document.querySelector("div");
// ๋ถ๋ชจ ์์( ๋
ธ๋)
console.log(divEl.parentNode);
console.log(divEl.parentElement);
// ์ด์ ํ์ ๋
ธ๋
console.log(divEl.previousElementSibling);
// ๋ค์ ํ์ ๋
ธ๋
console.log(divEl.nextElementSibling);
// ๋ถ๋ชจ์ ๋ค์์์
console.log(divEl.parentNode.nextElementSibling);
// ์์ ์ ๋ด๋ถ ๋
ธ๋๋ค ์ ์ด
console.log(divEl.innerHTML);
// text ๋ง!
console.log(divEl.textContent);
//setter
divEl.textContent = "<h1>hi</h1>";
divEl.innerHTML = "<h1>hi</h1>";
// ๋ค๋ก text ๋
ธ๋๋ก ๋ค์ด๊ฐ
divEl.append("<h2>hello</h2>");
const h2El = document.createElement("h2");
h2El.innerHTML = "2";
divEl.append(h2El);
//๋ฐฉ๋ฒ1
for (let i = 0; i < 10; i += 1) {
const h2El = document.createElement("h2");
h2El.innerHTML = i;
divEl.append(h2El);
}
//๋ฐฉ๋ฒ2
let h2Els = [];
for (let i = 0; i < 10; i += 1) {
const h2El = document.createElement("h2");
h2El.innerHTML = i + 1;
h2Els.push(h2El);
}
divEl.append(...h2Els);
// ์ฌ์ฉ x
console.log(divEl.innerText);
// qeuryselectorAll ๋ nodelist ๋ผ๋ ๋ฐฐ์ด ๋ฐ์ดํฐ์ฒ๋ผ ์๊ธด ๊ฐ์ฒด๋ฅผ ์ฐพ์
const divNodeList = document.querySelectorAll("div");
// qeuryselector ๋ ์์๋ฅผ ์ฐพ์
const divEl = document.querySelector("div");
// ์์ ์ ๋ด๋ถ ๋
ธ๋๋ค
console.log(divEl.innerHTML);
// text ๋ง!
console.log(divEl.textContent);
//setter
divEl.textContent = "<h1>hi</h1>";
divEl.innerHTML = "<h1>hi</h1>";
//attribute
divEl.getAttribute("title");
divEl.setAttribute("title", "hiiii");
//dateset
const user = {
name: "heropy",
age: 85,
};
console.log(divEl.dataset.user);
divEl.dataset.user = JSON.stringify(user);
JSON.parse(divEl.dataset.user);
console.log(divEl.dataset.userName);
//์์ ํฌ๊ธฐ ์์น
console.log(divEl.clientWidth);
console.log(divEl.clientHeight);
//์์ ๋ ๋๋ง ์ ๋ณด
//ํจ์๊ฐ ์คํ๋๋ฉด ํ๋ฉด์ ๊ณ์ฐํจ
console.log(divEl.getBoundingClientRect());
//์์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์์ผ๋ก ์์ฑ
const h1El = document.createElement("h1");
h1El.id = 'abc'
//===
h1El.setAttribute('id', 'abc')
//์์ฑํ ์์๋ฅผ ํ๋ฉด์ ์ถ๋ ฅ
document.body.append(h1El)
event
const divEl = document.querySelector("div");
//event handler === callback
// divEl.addEventListener("click", handler);
divEl.addEventListener("click", () => {
console.log();
});
const inputEl = document.querySelector("input");
inputEl.addEventListener("input", (event) => {
console.log(event.target.value);
});
inputEl.addEventListener("keydown", (event) => {
//ํ๊ธ์ด ๋๋ฒ ์
๋ ฅ๋๋ ์ด์ ํด๊ฒฐ
if (event.isComposing) return
console.log(event.target.value);
});
์ถ์ฒ: ํจ์คํธ์บ ํผ์ค ํํ ๊ทธ FE ๊ณผ์ ๋ฐ์์ ๊ฐ์ฌ๋
๋ฐ์ํ