[miniProjects] 43_Feedback UI Design

보리·2023λ…„ 8μ›” 7일
0

miniProjects

λͺ©λ‘ 보기
43/47

43_Feedback UI Design

πŸ’» 주제 : μ„Έ 가지 선택지 쀑 ν•˜λ‚˜λ₯Ό 선택해 리뷰λ₯Ό 보내면 감사닡μž₯이 λ‚˜μ˜€λŠ” ν”Όλ“œλ°± μΉ΄λ“œ

✨JS

ratingsContainer.addEventListener('click', (e) => {
  //e둜 μ„€μ •ν•˜λ©΄ 클릭된 μš”μ†Œλ₯Ό λ‚˜νƒ€λƒ„(e.target)
  //rating 클래슀(λΆ€λͺ¨) μ•ˆμ— μžˆλŠ” imgλ₯Ό μ–»μ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— parentNodeλ₯Ό 씀
  if(e.target.parentNode.classList.contains('rating')) {
    removeActice()
    e.target.parentNode.classList.add('active')
    selectedRating = e.target.nextElementSibling.innerHTML
  }
})

function removeActice() {
  for(let i=0; i<ratings.length; i++) {
    ratings[i].classList.remove('active')
  }
}

sendBtn.addEventListener('click', (e) => {
  panel.innerHTML = `
    <i class="fas fa-heart"></i>
    <strong>κ°μ‚¬ν•©λ‹ˆλ‹€!</strong>
    <br>
    <strong>의견 : ${selectedRating}</strong>
    <p>고객 지원 ν–₯상을 μœ„ν•΄ κ·€ν•˜μ˜ μ˜κ²¬μ„ λ°˜μ˜ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.</p>
  `
})
  • 클릭된 μš”μ†Œμ— λŒ€ν•œ 정보가 이벀트 객체 e둜 μ „λ‹¬λœλ‹€.

  • ifλ¬Έ : 클릭된 μš”μ†Œκ°€ "rating" 클래슀λ₯Ό 가지고 μžˆλŠ”μ§€ ν™•μΈν•œλ‹€.
    λ§Œμ•½ 클릭된 μš”μ†Œμ˜ λΆ€λͺ¨ μš”μ†Œμ— "rating" ν΄λž˜μŠ€κ°€ μžˆλ‹€λ©΄, 이 μš”μ†ŒλŠ” "rating" 클래슀λ₯Ό κ°–λŠ” μš”μ†ŒμΌ 것이닀.

  • removeActice(): 이 ν•¨μˆ˜λŠ” ν™œμ„±ν™”λœ "rating" 클래슀λ₯Ό κ°–λŠ” λͺ¨λ“  μš”μ†Œμ—μ„œ "active" 클래슀λ₯Ό μ œκ±°ν•œλ‹€.

  • e.target.parentNode.classList.add('active'):
    클릭된 μš”μ†Œκ°€ "rating" 클래슀λ₯Ό κ°–λŠ” 경우, 이 μš”μ†Œμ˜ λΆ€λͺ¨ μš”μ†Œ(κ°€μž₯ κ°€κΉŒμš΄ "rating" 클래슀λ₯Ό κ°–λŠ” 쑰상 μš”μ†Œ)에 "active" 클래슀λ₯Ό μΆ”κ°€ν•œλ‹€.

  • selectedRating = e.target.nextElementSibling.innerHTML:
    클릭된 μš”μ†Œκ°€ "rating" 클래슀λ₯Ό κ°–λŠ” 경우, ν•΄λ‹Ή μš”μ†Œμ˜ λ‹€μŒ ν˜•μ œ μš”μ†Œμ˜ λ‚΄μš©(small νƒœκ·Έμ˜ ν…μŠ€νŠΈλ₯Ό μ €μž₯)을 selectedRating λ³€μˆ˜μ— μ €μž₯ν•œλ‹€.

  • function removeActice() { ... }
    "rating" 클래슀λ₯Ό κ°–λŠ” μš”μ†Œ 쀑 λͺ¨λ“  μš”μ†Œμ—μ„œ "active" 클래슀λ₯Ό μ œκ±°ν•œλ‹€. for 루프λ₯Ό μ‚¬μš©ν•˜μ—¬ ratings 배열에 μžˆλŠ” λͺ¨λ“  μš”μ†Œμ— λŒ€ν•΄ "active" 클래슀λ₯Ό μ œκ±°ν•œλ‹€. 이 ν•¨μˆ˜λŠ” 이전에 μ„ νƒλœ 등급을 μ§€μš°κ³ , μƒˆλ‘œ μ„ νƒλœ λ“±κΈ‰λ§Œ "active" 클래슀λ₯Ό 갖도둝 ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.

profile
μ •μ‹ μ°¨λ € 이 κ°λ°•ν•œ μ„Έμƒμ†μ—μ„œ

0개의 λŒ“κΈ€