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日

相关文章

  • 浅谈js内置对象Math的属性和方法(推荐)

    下面我来详细讲解“浅谈js内置对象Math的属性和方法(推荐)”的完整攻略。 1. Math对象的属性 Math对象是JS的内置对象之一,它包含了常用的数学属性和方法。Math对象有很多的属性,这里我们介绍几个常见的属性。 Math.E:表示自然对数的底数,即e,大约等于2.718281828459045。 Math.PI:数学常数,表示圆周率π,大约等于3…

    JavaScript 2023年5月28日
    00
  • PHP和javascript常用正则表达式及用法实例

    PHP和JavaScript常用正则表达式及用法实例 什么是正则表达式 正则表达式是一种用来检索、替换和匹配文本的工具,它是基于字符模式匹配的。 正则表达式由字面值和特殊字符组成。字面值是指直接匹配的字符或字符串,特殊字符是包括“元字符”、“限定符”、“界定符”等一系列元素,用于构建灵活的模式。 PHP中的正则表达式 在PHP中,使用preg_match()…

    JavaScript 2023年6月10日
    00
  • javascript 日期时间 转换的方法

    当需要对 JavaScript 中的日期时间格式进行转换时,我们可以使用以下方法: 获取当前时间 使用以下方法可以获取到当前时间: const now = new Date(); 其中,now就是获取到的当前时间,它的格式是日期对象。可以通过该对象的方法来对时间进行处理。 时间戳转化为日期时间格式 时间戳指的是从1970年1月1日00:00:00开始所经过的…

    JavaScript 2023年5月27日
    00
  • js 得到文件后缀(通过正则实现)

    要得到一个文件的后缀,可以通过以下步骤来实现: 步骤 1:获取完整文件名 首先,我们需要获取文件的完整文件名,可以通过以下方式来获取: let fileName = ‘example.txt’; 步骤 2:通过正则表达式获取文件后缀 我们可以使用正则表达式来获取文件的后缀,正则表达式的语法为: /\.[^.]+$/g 该正则表达式的含义为: /\. :匹配以…

    JavaScript 2023年5月27日
    00
  • JavaScript的高级概念和用法详解

    JavaScript的高级概念和用法详解 JavaScript 是一种广泛使用的脚本语言,具有灵活性、动态性和可重用性等优点。而随着前端技术的飞速发展,JavaScript也不断更新迭代,涌现出越来越多的高级概念和用法,本文将对其中几个重要的进行详细讲解。 1. 闭包 闭包是一种特殊的函数,它能够访问并操作函数作用域以外的变量。在 JavaScript 中,…

    JavaScript 2023年5月17日
    00
  • javascript客户端遍历控件与获取父容器对象示例代码

    题目涉及到两个主题:JavaScript客户端遍历控件和获取父容器对象。下面,我将从以下几个方面为大家提供一份完整的攻略: JavaScript客户端遍历控件概述; 遍历控件示例说明; 获取父容器对象概述; 获取父容器对象示例说明。 1. JavaScript客户端遍历控件概述 在JavaScript中,我们经常需要访问页面中的控件对象。这些控件对象通常是通…

    JavaScript 2023年6月10日
    00
  • Javascript图像处理—为矩阵添加常用方法

    Javascript 图像处理 – 为矩阵添加常用方法 前言 在图像处理中,矩阵是重要的数据结构。Javascript 作为一门强大的编程语言,可以非常方便地完成矩阵的各种操作。在本篇文章中,我们将讲解为矩阵添加一些常用方法的过程,以便于以后的图像处理中使用。 实现常用矩阵方法 为了方便起见,我们在这里定义一个矩阵的类: class Matrix { con…

    JavaScript 2023年6月11日
    00
  • JavaScript中一些奇怪的问题及解决分享

    JavaScript中一些奇怪的问题及解决分享 在使用JavaScript开发过程中,我们难免会遇到一些奇怪的问题。本文将会介绍一些经典的JavaScript问题,以及如何解决它们。 1. 函数作用域 JavaScript中函数具有作用域,意味着函数所有的变量和参数只有在函数内部可见。下面的代码示例展示了这个问题。 var a = 1; function f…

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