๐Ÿ““ 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 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 ๊ณผ์ • ๋ฐ•์˜์›… ๊ฐ•์‚ฌ๋‹˜

๋ฐ˜์‘ํ˜•