当前位置:首页 > 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部分

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部分

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. 初始化评分控件

    js 实现评分

    $('#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
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

vue 实现评分

vue 实现评分

实现评分功能的方法 在Vue中实现评分功能可以通过多种方式完成,以下是几种常见的实现方法: 使用第三方库 使用现成的评分组件库可以快速实现评分功能,例如vue-star-rating或rate-it…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…