22.09.30 μμ
μκ° μ€ κ³΅λΆν λ΄μ©λ€μ μ 리νμμ΅λλ€ π
νΌλλ°±μ μΈμ λ νμμ
λλ€! π
- μνλ μμΉμ link νκ·Έ μ½μ
νκΈ°
const $link = document.createElement('link');
$link.setAttribute('rel', 'stylesheet');
const linkList = document.querySelectorAll('link');
linkList[linkList.length - 1].after($link)
const $link = `~~`;
document.querySelector('script').insertAdjacentHTML('beforebegin', $link);
- link νκ·Έλ₯Ό μνλ μμΉμ μ½μ
νκΈ° μν΄μ, insertAdjacentHTML 맀μλλ₯Ό μμ§ λͺ»ν΄μ, createElementλ‘ μ½μ
μ ν΄μ£Όμλ€. κ·Έλ°λ°, μ½λ κΈΈμ΄λ κΈΈμ΄μ§κ³ , κ°λ
μ±λ λ¨μ΄μ§λ κ² κ°μμ 리ν©ν λ§ λ, insertAdjacentHTML 맀μλλ₯Ό μ¬μ©νμ¬ μμ νμλ€.
- κ·Έλ°λ° λΆμμ μΈ λ¬Έμ μ μΌλ‘ link νκ·Έκ° 2κ°κ° μμ±λμλλ°, μ΄ μ΄μ λ starRating ν¨μ λ΄λΆμμ DOMContentLoadedκ° λ λ, μμ±λλλ‘ μ€μ ν΄μ£ΌμκΈ° λλ¬Έμ, starRating ν¨μκ° νΈμΆλ λλ§λ€ μλ‘ link νκ·Έκ° μμ±μ΄ λμκΈ° λλ¬Έμ΄λ€. κ·Έλμ, 리ν©ν λ§μ νλ©΄μ, starRating ν¨μ λ°μμ νΈμΆν μ μλλ‘ νμ¬, ν λ²λ§ link νκ·Έλ₯Ό μ½μ
νλλ‘ μμ νμλ€.
- μΆκ° κ³ λ―Όμ¬ν :
insertBefore
vs insertAdjacent
insertAdjacent 맀μλλ₯Ό μ¬μ©νμ λ, link νκ·Έκ° 2κ°κ° μμ±λμ΄μ λ€λ₯Έ λ°©λ²μΌλ‘ insertBefore 맀μλλ₯Ό μ¬μ©ν보μλ€. insertBeforeμ κ²½μ°, parameterμ 첫λ²μ§Έ μΈμλ‘ λ
Έλλ₯Ό λ°λ €μμΌ νλλ°, λ
Έλλ₯Ό λ°λ €μ€λ €λ©΄ λ€μ μ΄μ μ μ°λ¦¬κ° μμ±νλ μ½λμ νλ¦λλ‘ μμ±ν΄μΌνκΈ°μ, λΉν¨μ¨μ μ΄λΌλ μκ°μ΄ λ€μλ€. κ·Έλμ κ·Έλ κ² νμ§ μμλ λλ insertAdjacent 맀μλλ₯Ό μ ννμ¬ λ¦¬ν©ν λ§μ νμλ€.
$stars.forEach((star, i) => star.classList.toggle('hovered', i <= rating));
$stars.forEach((star, i) => {
if (i > rating) return false;
star.classList.add('hovered');
});
- μ΄μ μλ forEachλ¬Έμ λλ € toggle λ©μλλ₯Ό μ¬μ©νμ¬ λ³ ν΄λ¦μ΄λ νΈλ²νμ κ²½μ°μ μ΄μ μμλ€λΏλ§ μλλΌ μ΄νμ μμλ€λ μ€νλλ©° λ°λ³΅λ¬Έμ μ€ννμλ€.
- 리ν©ν λ§ νμλ κ΅³μ΄ μ΄νμ μμλ€μ νλ³ν νμμ±μ΄ μμ΄ λ΄κ° μ νν λ³μ μ΄μ μμλ€λ§ μνν ν forEachμ΄ μ’
λ£λλλ‘ ν΄μ£Όμλ€.
- breakμ΄ μλ return false λ₯Ό μ¬μ©νμ¬ forEachλ₯Ό μ’
λ£ν μ μλ€λ κ²μ μκ²λμλ€.