当前位置:首页 > JavaScript

js实现评分

2026-04-04 04:55:11JavaScript

实现评分功能的方法

HTML结构 创建一个包含评分星星的容器,通常使用divspan元素包裹多个spani元素表示星星。

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

CSS样式 为星星添加基本样式,包括默认颜色和悬停效果。

.rating span {
  font-size: 24px;
  color: #ccc;
  cursor: pointer;
  transition: color 0.2s;
}

.rating span:hover,
.rating span.active {
  color: #ffcc00;
}

JavaScript逻辑 通过事件监听实现交互功能,包括点击评分和悬停预览。

const stars = document.querySelectorAll('.rating span');
const currentRating = document.getElementById('current-rating');

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

  star.addEventListener('mouseout', function() {
    const currentValue = parseInt(currentRating.textContent);
    highlightStars(currentValue);
  });

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

function highlightStars(value) {
  stars.forEach(star => {
    const starValue = parseInt(star.getAttribute('data-value'));
    star.classList.toggle('active', starValue <= value);
  });
}

进阶功能实现

保存评分状态 使用localStorage保存用户选择的评分,页面刷新后保持状态。

// 读取保存的评分
const savedRating = localStorage.getItem('userRating');
if (savedRating) {
  currentRating.textContent = savedRating;
  highlightStars(savedRating);
}

// 修改点击事件保存评分
star.addEventListener('click', function() {
  const value = parseInt(this.getAttribute('data-value'));
  currentRating.textContent = value;
  localStorage.setItem('userRating', value);
  highlightStars(value);
});

半星评分实现 修改HTML结构支持半星评分,增加更精细的评分选择。

js实现评分

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

注意事项

  • 确保为评分组件添加适当的ARIA属性以提高可访问性
  • 移动端设备需要考虑触摸事件的处理
  • 实际项目中建议使用SVG图标替代字符星星以获得更好的视觉效果
  • 表单提交时需要将评分值包含在表单数据中

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

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

vue实现评分

vue实现评分

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

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…