Javascript를 사용하여 리뷰 별점을 추가하는 방법

11632 단어 javascriptwebdev
이 자습서에서는 Javascript를 사용하여 웹 애플리케이션에 리뷰 별표를 쉽게 추가하고 동적 기능을 갖도록 만드는 방법을 보여줍니다. 내가 참조하는 웹 애플리케이션에 특정 코드가 있음을 명심하십시오. 목적에 맞게 수정해야 할 수도 있습니다.

첫 번째 단계는 HTML 페이지에 Font Awesome 링크를 추가하는 것입니다.

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">


다음은 링크가 포함된 헤드가 포함된 전체 HTML 파일입니다.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles/index.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <title>Fish Store</title>
    <style>
        body {
            padding: 25px;
        }
    </style>
</head>


다음은 Javascript 코드를 만드는 것입니다. 이 예에서는 별점 5개 리뷰를 사용하고 있습니다. 내 코드에는 createDiv() 함수가 있습니다. 이것은 단순히 웹 애플리케이션 구조에 대해 할당된 ID로 Div 요소를 생성하는 것입니다. 이 예에서 내 별 ID는 newreviewstars11, newreviewstar21, newreviewstar31, newreviewstar41 및 newreviewstar51입니다. 이 별들은 className "fa fa-star"로 시작합니다. "fafa-star"className은 처음 생성될 때 강조 표시되지 않습니다.



//create the div star element
newDiv = createDiv("newreviewstars", reviewId)
    form.appendChild(newDiv)

// for loop to generate the number of stars, in this instance 5.
    for (let k = 1; k < 6; k++){
      let starDiv = createDiv('fa fa-star', k)
      starDiv.setAttribute("id", `newreviewstar${k}${reviewId}`)
      element = newDiv.appendChild(starDiv)
    }


별을 색상으로 채우려면 div 클래스 이름을 "fa fa-star checked"로 변경하고 ".checked"참조를 CSS 파일에 추가해야 합니다.

다음은 className을 변경하는 방법의 예입니다. 필요한 기능에 따라 className을 변경하려면 JS 코드를 생성해야 합니다.

starDiv.className = 'fa fa-star checked'




이것은 별이 "선택"되면 주황색으로 별을 채우기 위해 CSS 파일에 들어가는 것입니다.

.checked {
  color: orange;
}


별을 동적으로 만들려면 각 별 요소에 리스너를 추가해야 합니다.

// creates a listener for selecting the number of stars when creating a new review
  function reviewStarsListener(newReviewId){
    //obtain stars element, which is displayed as an array
    for (let i = 1; i <= 5; i++){
      let star = document.getElementById(`newreviewstar${i}${newReviewId}`)
      star.addEventListener("click", function(){highlightStar(star, newReviewId)});
    }
  }


기능과 관련하여 고려해야 할 몇 가지 사항이 있습니다.
  • 사용자가 별표 4를 클릭하면 별표 1~3도 선택됩니다
  • .
  • 사용자가 실수로 별 5개를 선택했지만 별 4개를 의미하는 경우 다른 별을 클릭할 수 있는 방법이 필요하며 자동으로 조정됩니다.

  • 내 청취자는 clearStars() 함수를 먼저 수행한 다음 동적으로 변경할 수 있는 방식으로 별을 강조 표시하는 highlightStar() 함수를 실행합니다.

    // highlights additional stars when a high star value is selected.
    // e.g. if star 4 is selected then this will highlight star 1 - 4.
      function highlightStar(starDiv, newReviewId){
        clearStars(newReviewId)
        starSelected = starDiv.id.replace("newreviewstar", "")
        numOfStars = starSelected.charAt(0)
        for (let i = 1; i <= numOfStars; i++){
          let starDiv = document.getElementById(`newreviewstar${i}${newReviewId}`)
          starDiv.className = 'fa fa-star checked'
        }
      }
    



    // allow reviewer to dynamically be able to click on the stars to
      // change their # of stars review
      function clearStars(newReviewId){
        for (let i = 1; i <= 5; i++){
          let starDiv = document.getElementById(`newreviewstar${i}${newReviewId}`)
          starDiv.className = 'fa fa-star'
        }
      }
    


    리뷰가 포함된 동적 웹 애플리케이션을 만들 때 도움이 되기를 바랍니다.

    좋은 웹페이지 즐겨찾기