22.09.27 μμ μκ° μ€ κ³΅λΆν λ΄μ©λ€μ μ 리νμμ΅λλ€ π
νΌλλ°±μ μΈμ λ νμμ λλ€! π
$container.addEventListener('dragover', e => {
e.preventDefault();
});
e.preventDefault()
) μ λλ‘ μλνλ κ²μ μκ²λμλ€.// dragμ μ 보 μ μ₯
$container.addEventListener('dragstart', e => {
if (!e.target.matches('.draggable')) return;
e.dataTransfer.setData('from', e.target.previousElementSibling.textContent - 1);
});
// dropμ μ 보 νλ
$container.addEventListener('drop', e => {
if (!e.target.matches('.draggable')) return;
...
const from = e.dataTransfer.getData('from');
...
}
e.dataTransfer.setData(<key>, <value>))
e.dataTransfer.getData(<key>)
// μ΄μ (μ€μ)
const arr = [1, 2, 3, 4, 5];
let temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
console.log(arr); // [1, 3, 2, 4, 5]
// μ΄ν (ꡬ쑰 λΆν΄ ν λΉ)
const arr = [1, 2, 3, 4, 5];
[arr[1], arr[2]] = [arr[2], arr[1]];
console.log(arr); // [1, 3, 2, 4, 5]
// 1λ²
document.querySelector('.hour').style.setProperty('--deg', moveHour);
// 2λ²
$container.querySelector('.hour').style.setProperty('--deg', moveHour);
document.querySelector
λ‘ λΆλ¬μ€κ² λλ©΄, ν΄λΉ μμλ€ μ€ μ²«λ²μ§Έ μμλ§ λΆλ¬μ¬ μ μκΈ° λλ¬Έμ΄λ€. κ·Έλ¦¬κ³ , app.js νμΌμμ μ¬μ¬μ©μ΄ κ°λ₯νλλ‘ forEach λ¬Έμ μ¬μ©νκ³ μλλ°, κ·Έκ±Έ κ°κ³Όνκ³ νμΌ μμ±μ ν΄μ ν΄λΉ λ¬Έμ μ μ΄ λ°μνμλ€. // μ΄μ
const addStars = () => {
const starCount = +$container.dataset.maxRating;
const starArray = new Array(starCount).fill(null);
$container.innerHTML = `
<div class="star-rating-container">
${starArray.map(_ => `<i class='bx bxs-star'></i>`).join('')}
</div>
`;
};
// μ΄ν
const addStars = () => {
const starCount = +$container.dataset.maxRating;
$container.innerHTML = `
<div class="star-rating-container">
${`<i class='bx bxs-star'></i>`.repeat(starCount)}
</div>
`;
};
μ²μμλ datasetμΌλ‘λΆν° λ³μ κ°μλ₯Ό λ°μ κ·Έ κ°μλ§νΌ λ°°μ΄ μμλ₯Ό λ§λ€μ΄ mapμ λλ €μ£Όμλ€.
String.repeat(count)
ν¨μλ₯Ό μ¬μ©ν΄λ λλ€λ κ²μ μμ μ΄λ₯Ό μ μ©νμλ€.link νκ·Έλ₯Ό μΆκ°νλ addLink ν¨μμ κ²½μ° μ²μμ StarRating ν¨μ λ΄λΆμ μμ±νμμ λ, ν΄λΉ StarRating ν¨μκ° νΈμΆλλ§νΌ μΆκ°κ° λμλ€.
λ³μ ν΄λ¦νμμ κ²½μ° ν΄λΉ μΈλ±μ€ μ΄μ μ μμλ€μ μ ννκΈ° μν΄μ μ‘°κ±΄λ¬Έμ΄ νμνλλ°, λ΄κ° μ νν λ³μ΄ λͺ λ²μ§Έ indexμ μ‘΄μ¬νλμ§ μ μκ° μμλ€.
let rating = 0 // μ΄κΈ°κ° 0
$container.addEventListener('mouseover', e => {
...
rating = [...$container.querySelectorAll('.star-rating-container > i')].indexOf(e.target)
...
}
mouseover
νκ±°λ click
ν λ³μ index κ°μ indexOf λ©μλλ₯Ό μ¬μ©νμ¬ μνλ‘ μ μ₯νμ¬ μ΄λ₯Ό ν΄κ²°ν΄ μ£Όμλ€.컀μ€ν μ΄λ²€νΈμ λ€μκ³Ό κ°μ΄ λ§λ€μμ§λ§ μ€μ λ‘ μ μ©μ΄ μλλ λ¬Έμ κ° μ‘΄μ¬νλ€
const event = new CustomEvent('rating-change', {
detail: rating + 1,
});
$container.dispatchEvent(event);
click
νμ κ²½μ°μ κ·Έ κ°μ νλ©΄μ νμνλ κ²μ΄κΈ° λλ¬Έμ click
μ΄λ²€νΈ λ΄λΆμ μ λ΄μ©μ μμ±ν΄μ€μΌλ‘μ¨ μ΄λ₯Ό ν΄κ²°ν΄μ£Όμλ€.