当前位置:首页 > JavaScript

js 实现星星打分

2026-04-07 13:47:43JavaScript

实现星星打分功能

在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 class="rating-value">评分: 0</p>

CSS部分

js 实现星星打分

.star-rating {
  font-size: 24px;
  cursor: pointer;
}
.star {
  color: #ccc;
  transition: color 0.2s;
}
.star:hover,
.star.active {
  color: #ffcc00;
}

JavaScript部分

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

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

    stars.forEach((s, index) => {
      if (index < value) {
        s.classList.add('active');
      } else {
        s.classList.remove('active');
      }
    });

    ratingValue.textContent = `评分: ${value}`;
  });
});

实现半星评分功能

如果需要更精细的半星评分功能,可以这样实现:

js 实现星星打分

HTML部分

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

JavaScript部分

const halfStars = document.querySelectorAll('.half-star');

halfStars.forEach(star => {
  star.addEventListener('click', () => {
    const value = parseFloat(star.getAttribute('data-value'));

    halfStars.forEach(s => {
      const sValue = parseFloat(s.getAttribute('data-value'));
      if (sValue <= value) {
        s.textContent = sValue % 1 === 0 ? '★' : '☆';
        s.style.color = '#ffcc00';
      } else {
        s.textContent = sValue % 1 === 0 ? '★' : '☆';
        s.style.color = '#ccc';
      }
    });
  });
});

实现鼠标悬停效果

为增强用户体验,可以添加鼠标悬停效果:

stars.forEach(star => {
  star.addEventListener('mouseover', () => {
    const value = parseInt(star.getAttribute('data-value'));
    stars.forEach((s, index) => {
      s.style.color = index < value ? '#ffcc00' : '#ccc';
    });
  });

  star.addEventListener('mouseout', () => {
    const activeStar = document.querySelector('.star.active');
    if (!activeStar) return;

    const activeValue = parseInt(activeStar.getAttribute('data-value'));
    stars.forEach((s, index) => {
      s.style.color = index < activeValue ? '#ffcc00' : '#ccc';
    });
  });
});

这些方法提供了完整的星星评分功能实现,包括基本评分、半星评分和交互效果。可以根据实际需求进行调整和扩展。

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

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…