当前位置:首页 > JavaScript

js 实现评分

2026-02-02 08:23:59JavaScript

实现评分功能(五星评分)

在JavaScript中实现五星评分功能,可以通过HTML、CSS和JavaScript结合完成。以下是一个常见的实现方式:

HTML部分

<div class="star-rating">
  <span class="star" data-value="1">★</span>
  <span class="star" data-value="2">★</span>
  <span class="star" data-value="3">★</span>
  <span class="star" data-value="4">★</span>
  <span class="star" data-value="5">★</span>
</div>
<p>当前评分: <span id="rating-value">0</span> 星</p>

CSS部分

.star-rating {
  font-size: 24px;
  cursor: pointer;
}

.star {
  color: #ccc;
}

.star.hover {
  color: #ffcc00;
}

.star.active {
  color: #ff9900;
}

JavaScript部分

js 实现评分

const stars = document.querySelectorAll('.star');
const ratingValue = document.getElementById('rating-value');

let currentRating = 0;

stars.forEach(star => {
  star.addEventListener('mouseover', () => {
    const value = parseInt(star.getAttribute('data-value'));
    highlightStars(value);
  });

  star.addEventListener('mouseout', () => {
    highlightStars(currentRating);
  });

  star.addEventListener('click', () => {
    currentRating = parseInt(star.getAttribute('data-value'));
    ratingValue.textContent = currentRating;
    highlightStars(currentRating);
  });
});

function highlightStars(value) {
  stars.forEach(star => {
    star.classList.remove('active', 'hover');
    if (parseInt(star.getAttribute('data-value')) <= value) {
      star.classList.add('hover');
    }
    if (parseInt(star.getAttribute('data-value')) <= currentRating) {
      star.classList.add('active');
    }
  });
}

实现半星评分功能

如果需要更精细的半星评分,可以这样修改:

HTML部分

<div class="star-rating">
  <span class="star" data-value="0.5">☆</span>
  <span class="star" data-value="1">★</span>
  <span class="star" data-value="1.5">☆</span>
  <span class="star" data-value="2">★</span>
  <span class="star" data-value="2.5">☆</span>
  <span class="star" data-value="3">★</span>
  <span class="star" data-value="3.5">☆</span>
  <span class="star" data-value="4">★</span>
  <span class="star" data-value="4.5">☆</span>
  <span class="star" data-value="5">★</span>
</div>

JavaScript部分

js 实现评分

const stars = document.querySelectorAll('.star');
const ratingValue = document.getElementById('rating-value');

let currentRating = 0;

stars.forEach(star => {
  star.addEventListener('mouseover', () => {
    const value = parseFloat(star.getAttribute('data-value'));
    highlightStars(value);
  });

  star.addEventListener('mouseout', () => {
    highlightStars(currentRating);
  });

  star.addEventListener('click', () => {
    currentRating = parseFloat(star.getAttribute('data-value'));
    ratingValue.textContent = currentRating;
    highlightStars(currentRating);
  });
});

function highlightStars(value) {
  stars.forEach(star => {
    star.classList.remove('active', 'hover');
    const starValue = parseFloat(star.getAttribute('data-value'));
    if (starValue <= value) {
      star.classList.add('hover');
    }
    if (starValue <= currentRating) {
      star.classList.add('active');
    }
  });
}

使用第三方库实现

如果不想从头开始实现,可以使用现成的评分库,如jQuery Raty:

  1. 引入库文件

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/raty/3.1.1/jquery.raty.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/raty/3.1.1/jquery.raty.min.js"></script>
  2. 初始化评分控件

    $('#star-rating').raty({
    score: 3, // 默认评分
    half: true, // 允许半星
    starHalf: 'path/to/star-half.png',
    starOff: 'path/to/star-off.png',
    starOn: 'path/to/star-on.png',
    click: function(score) {
     console.log('用户评分:', score);
    }
    });

以上方法提供了从简单到复杂的评分实现方案,可以根据项目需求选择合适的实现方式。

标签: 评分js
分享给朋友:

相关文章

vue实现评分

vue实现评分

实现评分功能的基本方法 使用Vue实现评分功能可以通过多种方式完成,常见的方法包括基于组件、自定义指令或第三方库。以下是几种典型实现方案。 基于组件的评分实现 创建一个可复用的评分组件,利用v-fo…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js 实现文件上传

js 实现文件上传

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。以下是一个基础示例: <input ty…

js实现刷新页面

js实现刷新页面

刷新页面的方法 在JavaScript中,可以通过多种方式实现页面刷新。以下是几种常见的方法: 使用 location.reload() 调用 location.reload() 方法可以重新加载当…