<…">
当前位置:首页 > JavaScript

js实现评分

2026-03-01 04:19:52JavaScript

实现评分功能的基本方法

在JavaScript中实现评分功能通常涉及创建交互式星级评分组件。以下是常见的实现方式:

HTML结构

<div class="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 {
  font-size: 24px;
  color: #ccc;
  cursor: pointer;
  transition: color 0.2s;
}

.star.active {
  color: #ffcc00;
}

JavaScript逻辑

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

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

    stars.forEach(s => {
      s.classList.toggle('active', 
        parseInt(s.getAttribute('data-value')) <= value
      );
    });
  });
});

支持鼠标悬停效果的实现

增强用户体验可以添加鼠标悬停预览功能:

let currentHover = 0;

stars.forEach(star => {
  star.addEventListener('mouseover', () => {
    currentHover = parseInt(star.getAttribute('data-value'));
    updateStars();
  });

  star.addEventListener('mouseout', () => {
    currentHover = 0;
    updateStars();
  });
});

function updateStars() {
  const currentRating = parseInt(ratingValue.textContent);
  stars.forEach(star => {
    const value = parseInt(star.getAttribute('data-value'));
    star.classList.toggle('active', 
      value <= (currentHover || currentRating)
    );
  });
}

表单集成方法

如需将评分结果提交到表单:

<form id="rating-form">
  <input type="hidden" name="rating" id="rating-input" value="0">
  <!-- 其他表单字段 -->
  <button type="submit">提交评分</button>
</form>
document.getElementById('rating-form').addEventListener('submit', (e) => {
  document.getElementById('rating-input').value = 
    document.getElementById('rating-value').textContent;
});

使用第三方库的简化方案

对于更复杂的评分需求,可以考虑使用现有库:

  • RateYo: 轻量级jQuery插件
  • Starability.css: 纯CSS解决方案
  • Rater.js: 纯JavaScript库

安装RateYo示例:

npm install rateyo

使用示例:

import $ from 'jquery';
import 'rateyo/src/jquery.rateyo';

$("#rating").rateYo({
  rating: 3.6,
  halfStar: true,
  onChange: function(rating) {
    $("#rating-value").text(rating);
  }
});

无障碍访问优化

确保评分组件对屏幕阅读器友好:

js实现评分

<div class="rating" role="radiogroup" aria-labelledby="rating-label">
  <span id="rating-label">请评分</span>
  <span class="star" role="radio" aria-checked="false" data-value="1">★</span>
  <!-- 其他星星 -->
</div>
stars.forEach(star => {
  star.addEventListener('click', () => {
    stars.forEach(s => {
      s.setAttribute('aria-checked', 
        s === star || parseInt(s.getAttribute('data-value')) < 
        parseInt(star.getAttribute('data-value'))
      );
    });
  });
});

这些实现方案覆盖了从基础到高级的评分功能需求,可根据具体项目要求选择合适的实现方式。

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

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现原理

js实现原理

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

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…