当前位置:首页 > 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
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

vue 实现评分

vue 实现评分

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

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…