JS实现五星好评效果

实现五星好评效果主要分两个步骤,分别是HTML结构布局和JavaScript脚本编写。

HTML结构布局

首先,需要在页面中创建五个星星图标,可以使用<i>标签,设置样式为fa fa-star,并将五个星星元素放置在指定的容器内,如下所示:

<div class="star-rating">
  <i id="star1" class="fa fa-star"></i>
  <i id="star2" class="fa fa-star"></i>
  <i id="star3" class="fa fa-star"></i>
  <i id="star4" class="fa fa-star"></i>
  <i id="star5" class="fa fa-star"></i>
</div>

其中,id属性为每个星星元素设置唯一的ID值,方便后续进行操作。

JavaScript脚本编写

接下来,需要编写JavaScript脚本实现星星的高亮和评分功能。具体实现方式如下:

实现星星高亮

  1. 给每个星星元素绑定鼠标移入事件,使用addEventListener方法实现,监听mouseover事件。

  2. 在事件处理函数中,使用循环遍历所有星星元素,将当前鼠标所在星星及其左边的所有星星元素设置为高亮状态。设置方法可以通过添加fa-star样式,或者className属性来实现。

  3. 给每个星星元素绑定鼠标移出事件,同样使用addEventListener方法实现,监听mouseout事件。

  4. 在移出事件处理函数中,将所有星星元素的样式设置为默认状态,取消高亮状态。

示例代码如下:

let stars = document.querySelectorAll('.star-rating i');

// 绑定鼠标移入事件
stars.forEach((star, index) => {
  star.addEventListener('mouseover', () => {
    for (let i = 0; i <= index; i++) {
      stars[i].classList.add('fa-star');
      stars[i].classList.remove('fa-star-o');
    }
  });

  // 绑定鼠标移出事件
  star.addEventListener('mouseout', () => {
    for (let i = 0; i < stars.length; i++) {
      stars[i].classList.add('fa-star-o');
      stars[i].classList.remove('fa-star');
    }
  });
});

实现评分功能

  1. 给每个星星元素绑定点击事件,同样使用addEventListener方法实现,监听click事件。

  2. 在事件处理函数中,将当前鼠标所在星星及其左边的所有星星元素设置为高亮状态。设置方法可以通过添加fa-star样式,或者className属性来实现。

  3. 根据评分等级的不同,可以触发相应的后续业务逻辑,如保存评分、显示评分结果等。

示例代码如下:

stars.forEach((star, index) => {
  star.addEventListener('click', () => {
    for (let i = 0; i <= index; i++) {
      stars[i].classList.add('fa-star');
      stars[i].classList.remove('fa-star-o');
    }
    // 假设评分等级 ranges from 1 to 5
    let rating = index + 1;
    console.log(`You rated ${rating} stars.`);
  });
});

示例说明

下面给出两个示例,分别演示如何在不同的业务场景下使用上述实现方案。

示例1:商家评分功能

在一个电商平台的商品详情页面中,用户可以对该商品的商家进行评分。实现如下:

<div class="seller-rating">
  <h3>商家评分</h3>
  <div class="star-rating">
    <i id="star1" class="fa fa-star-o"></i>
    <i id="star2" class="fa fa-star-o"></i>
    <i id="star3" class="fa fa-star-o"></i>
    <i id="star4" class="fa fa-star-o"></i>
    <i id="star5" class="fa fa-star-o"></i>
  </div>
</div>

<script>
 // 插入上述 JavaScript 代码进行绑定
</script>

在商品详情页面中,插入以上HTML代码和JavaScript代码。当用户对商家进行评分时,页面上的星星图片会自动变为黄色,按照用户选择的星星数量计算评分等级。可以通过Ajax请求将评分数据保存到后端服务器,以便在后续的数据统计和分析中使用。

示例2:文章评分功能

在一个新闻资讯网站中,用户可以对某篇文章进行评分。实现如下:

<div class="post-rating">
  <h3>文章评分</h3>
  <div class="star-rating">
    <i id="star1" class="fa fa-star-o"></i>
    <i id="star2" class="fa fa-star-o"></i>
    <i id="star3" class="fa fa-star-o"></i>
    <i id="star4" class="fa fa-star-o"></i>
    <i id="star5" class="fa fa-star-o"></i>
  </div>
  <button id="submit-btn" type="button">提交评分</button>
</div>

<script>
 // 插入上述 JavaScript 代码进行绑定
 let submitBtn = document.getElementById('submit-btn');
 submitBtn.addEventListener('click', () => {
   // 判断是否已经评分,未评分则提示用户评分
   let rated = document.querySelector('.star-rating .fa-star');
   if (rated) {
     let rating = rated.id.split('star')[1];
     console.log(`You rated ${rating} stars.`);
     // TODO: 发送评分请求
   } else {
     alert('请先评分后再提交!');
   }
 });
</script>

在文章页面中,展示文章内容和评分表单。用户可以选择评分星级,并且点击提交按钮后可以触发评分保存等后续逻辑。需要注意的是,提交按钮需要添加相应的事件监听函数,以防用户没有进行任何评分操作就进行了文章评价。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现五星好评效果 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • Single-spa 源码浅析

    引言 前一段时间, 正好在做微前端的接入和微前端管理平台的相关事项。 而我们当前使用的微前端框架则是 qiankun, 他是这样介绍自己的: qiankun 是一个基于 single-spa 的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。 所以本文基于 single-spa 源码, 来介绍 single-spa 当前使用版本 5…

    JavaScript 2023年4月18日
    00
  • JSON.stringify转换JSON时日期时间不准确的解决方法

    当使用JSON.stringify方法将JavaScript对象转换成JSON字符串时,日期时间类型的值会被转换成字符串类型,而且格式并不符合ISO8601标准。例如,使用JSON.stringify方法将new Date()转换成JSON字符串时,会得到如下结果: "2021-05-27T09:57:45.730Z" 其中,日期时间的格…

    JavaScript 2023年5月27日
    00
  • JS判断字符串变量是否含有某个字串的实现方法

    JS判断字符串变量是否含有某个字串的实现方法可以使用JS字符串对象提供的indexOf()方法。 indexOf()方法返回被查找字符串的起始位置,如果没有找到则返回-1。通过这个方法,可以判断某个字符串是否在原字符串中存在,从而实现判断字符串变量是否含有某个字串。 以下是具体的实现方法: 方法一:使用indexOf()方法 语法格式: string.ind…

    JavaScript 2023年5月28日
    00
  • javascript入门·动态的时钟,显示完整的一些方法,新年倒计时

    Javascript入门-动态的时钟 基本思路 实现动态时钟,需要获取当前的时间,根据时分秒分别计算对应的角度,并使用transform指令对时钟的指针进行旋转。 HTML文件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <…

    JavaScript 2023年5月27日
    00
  • 3款实用的在线JS代码工具(国外)

    3款实用的在线JS代码工具(国外) 1. JSFiddle 简介 JSFiddle 是一个在线的代码编辑器,可以用来编辑 HTML/CSS/JavaScript 代码,并且可以立即运行和分享代码。它可以在左侧编辑 HTML/CSS/JavaScript 代码,在中间显示运行结果,在右侧显示 JavaScript 控制台。 使用方法 打开 JSFiddle 的…

    JavaScript 2023年5月19日
    00
  • js中.sort()函数的常见用法与高级操作

    让我们来具体讲解一下 JavaScript 中数组的 .sort() 方法吧。 基本用法 .sort() 方法用于对数组进行排序,它可以带一个可选的排序函数作为参数,用于控制排序规则。 默认的排序规则是将元素转换成字符串后进行比较,然后按照 Unicode 码点排序。比如,对于以下数组: const arr = [10, 5, 8, 3, 2]; 如果我们调…

    JavaScript 2023年5月19日
    00
  • 基于Javascript实现文件实时加载进度的方法

    实现文件实时加载进度的方法本质上就是通过监听HTTP请求,统计请求发起时和请求完成时的时间,并通过计算来得出百分比进度。下面是实现文件实时加载进度的详细教程: 准备工作 首先,在页面中引入jQuery: <script src="//code.jquery.com/jquery-3.3.1.min.js"></scrip…

    JavaScript 2023年5月27日
    00
  • 解析如何利用iframe标签以及js制作时钟

    当我们需要在网页上显示时钟时,可以使用iframe标签和JS来实现。本文将详细介绍如何利用iframe标签和JS制作时钟。 步骤1:创建HTML网页 首先,在你的HTML文件中,创建一个标签,在其中指定一个id,以便在后面的JavaScript代码中引用。 <!DOCTYPE html> <html> <head> &lt…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部