首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js实现星级评分

一、基础概念

  1. HTML结构
    • 首先需要创建用于表示星级的元素,通常可以使用<div>或者<span>标签来表示单个的星星。
  • CSS样式
    • 用于设置星星的外观,比如大小、颜色(未选中时和选中时的不同颜色)等。
  • JavaScript逻辑
    • 处理用户的交互操作,例如鼠标悬停显示评分效果、点击确定评分等功能。

二、相关优势

  1. 用户体验友好
    • 直观地让用户对内容进行评价,方便快捷。
  • 数据收集方便
    • 可以轻松地将用户评分数据发送到服务器进行统计和分析。

三、类型

  1. 静态星级评分
    • 只是显示预先设定好的评分,用户不能进行交互修改。
  • 可交互星级评分
    • 用户可以通过鼠标悬停查看评分效果,点击确定自己的评分。

四、应用场景

  1. 电商产品页面
    • 让用户对购买的商品进行评价打分。
  • 内容平台
    • 如文章、视频等的评分,以帮助其他用户判断内容质量。

五、示例代码实现可交互星级评分(JavaScript + HTML+CSS)

  1. HTML部分
代码语言:txt
复制
<div id="star - rating">
    <span class="star" data - value="1">&#9733;</span>
    <span class="star" data - value="2">&#9733;</span>
    <span class="star" data - value="3">&#9733;</span>
    <span class="star" data - value="4">&#9733;</span>
    <span class="star" data - value="5">&#9733;</span>
</div>
  1. CSS部分
代码语言:txt
复制
#star - rating {
    display: flex;
}

.star {
    font - size: 24px;
    color: grey;
    cursor: pointer;
}

.star.filled {
    color: gold;
}
  1. JavaScript部分
代码语言:txt
复制
const stars = document.querySelectorAll('#star - rating .star');
let rating = 0;

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

    star.addEventListener('click', function () {
        rating = this.getAttribute('data - value');
        // 这里可以将rating发送到服务器,例如使用fetch API
        console.log('用户评分为:', rating);
    });
});

function highlightStars(value) {
    stars.forEach(star => {
        if (star.getAttribute('data - value') <= value) {
            star.classList.add('filled');
        } else {
            star.classList.remove('filled');
        }
    });
}

// 初始化显示默认状态(全灰)
highlightStars(0);

在这个示例中:

  • HTML创建了5个代表星星的<span>元素,每个星星有一个data - value属性表示其对应的分数值。
  • CSS设置了星星的基本样式,包括未选中时的灰色和选中(填充)后的金色。
  • JavaScript部分为每个星星添加了鼠标悬停和点击事件监听器。当鼠标悬停在某个星星上时,会根据星星的data - value属性高亮显示相应数量的星星;当点击某个星星时,记录下评分值(这里只是简单地在控制台输出,实际应用中可发送到服务器)。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券