当前位置:首页 > 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实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现vr

js实现vr

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

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…