16_Drink Water
๐ป ์ฃผ์ : ๋ฌผ๋ณ์ ํด๋ฆญํ๋ฉด ํฐ ๋ฌผ๋ณ ์์ ๋ฌผ์ด ์ฑ์์ง๋ค.
- Small ์ปต์ ํด๋ฆญ์ Big ์ปต์ ๋ฌผ์ด ๋ด๊ธด๋ค.
// smallCups์ ๊ฐ์๋ ์ด 8๊ฐ. ์ธ๋ฑ์ค๋ 0~7. ํด๋ฆญ์ ํ์ด๋ผ์ดํธ ํจ๊ณผ๋ฅผ ์ค๊ฑฐ์.
smallCups.forEach((cup, idx)=> {
cup.addEventListener('click', () => highlightCups(idx));
})
// ์ธ๋ฑ์ค๊ฐ ์์ ์ปต๋ค์ ํต๊ณผํ๋ ๋ฐ๋ณต๋ฌธ์ ํตํด ํน์ ๋ฐ๋ณต๋ฌธ์ด ํด๋ฆญํ ์ธ๋ฑ์ค๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ง ํ์ธ.
function highlightCups(idx) {
// smallCups์ ๋ฐฐ์ด์์ ํ์ฌ ์ธ๋ฑ์ค(ํด๋ฆญํ ์ธ๋ฑ์ค)๋ฅผ ํ์ธํ๊ณ ๋ฐฐ์ด ๋ชฉ๋ก์์ ํด๋ฆญํ ์ธ๋ฑ์ค๋ฅผ ํฌํจํ๊ณ ์๋์ง ํ์ธํ๋ค.(contains ๋ฉ์๋)
// ํน์ ํด๋์ค๋ฅผ ํ์ธํ ๋ full์ ํฌํจํ๋์ง ํ์ธํ๊ณ ๋ค์ ์ธ๋ฑ์ค๊ฐ full์ ํฌํจํ์ง ์๋์ง๋ ํ์ธํ๋ค.
if(smallCups[idx].classList.contains('full') && !smallCups[idx].nextElementSibling.classList.contains('full')) {
idx--;
}
smallCups.forEach((cup, idx2) => {
if(idx2 <= idx) {
cup.classList.add('full');
} else {
cup.classList.remove('full');
}
})
updateBigCup();
}
function updateBigCup() {
// ์ฑ์์ง ์์ ์ปต์ ๊ฐ์๋ฅผ fullCups๋ผ๋ ๋ณ์์ ์ ์ธ.
const fullCups = document.querySelectorAll('.cup-small.full').length;
const totalCups = smallCups.length;
if(fullCups === 0) {
percentage.style.visibility = 'hidden';
percentage.style.height = 0;
} else {
percentage.style.visibility = 'visible';
percentage.style.height = `${fullCups / totalCups * 330}px`;
percentage.innerText = `${fullCups / totalCups *100}%`;
}
// ์ปต์ด ๋ค ์ฐจ๋ฉด remained ๊ธ์๊ฐ ์์ด์ ธ์ผ ํจ.
if(fullCups === totalCups) {
remained.style.visibility = 'hidden';
remained.style.height = 0;
} else {
remained.style.visibility = 'visible';
// ์์ง ์ฑ์์ผ ํ๋ ๋ฆฌํฐ์์ ๋ณด์ฌ์ค.
liters.innerText = `${2 - (250 * fullCups / 1000)}`;
}
}