JS实现五星好评效果

yizhihongxing

实现五星好评效果主要分两个步骤,分别是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日

相关文章

  • JavaScript高级程序设计 学习笔记 js高级技巧

    JavaScript高级程序设计 学习笔记 js高级技巧 概述 《JavaScript高级程序设计》是一本深入讲解JavaScript核心概念和高级技巧的经典著作。对于想要深入学习JavaScript的开发者来说,这本书是非常好的选择。本文将会分享我对该书学习过程的笔记和总结。 学习笔记 第一部分 基础知识 第一部分主要介绍了一些JavaScript的基础知…

    JavaScript 2023年5月18日
    00
  • js正则表达式常用函数详解

    JS正则表达式常用函数详解 JavaScript中利用正则表达式进行字符串匹配的操作非常常见。本文将详细讲解JavaScript中常用的正则表达式函数。 RegExp对象 在JavaScript中,正则表达式使用RegExp对象来表示。RegExp对象有两种创建方式: 直接量法 RegExp对象可以使用直接量法来创建,直接量法用斜杠(/)来定义正则表达式的模…

    JavaScript 2023年5月27日
    00
  • js实现多个倒计时并行 js拼团倒计时

    实现多个倒计时并行的方式如下: 使用 Date 对象获取当前时间和目标时间之间的时间差,然后根据时间差计算出剩余时间。 将剩余时间转换成分、秒和毫秒,然后在网页上显示出来,使用定时器每隔一秒更新一次显示的时间。 判断剩余时间是否为零,如果为零则停止定时器,显示倒计时结束提示。 代码示例: // 倒计时的目标时间(2019年12月31日 23:59:59) v…

    JavaScript 2023年6月10日
    00
  • 前端设计模式——计算属性模式

    计算属性模式(Computed Property Pattern):在JavaScript中,可以使用Object.defineProperty()方法来实现计算属性模式,通过get和set方法来计算属性值。 计算属性模式用于将对象的某些属性值与其他属性值相关联。该模式常用于Vue.js等框架中。 计算属性模式的基本思想是,定义一个函数作为对象的属性,并在该…

    JavaScript 2023年4月18日
    00
  • JavaScript中setMonth()方法的使用详解

    下面是关于“JavaScript中setMonth()方法的使用详解”的完整攻略。 什么是setMonth()方法? setMonth()方法是JavaScript中Date对象原型上的一个方法,用于设置Date对象的月份。它的用法如下: dateObj.setMonth(month[, date]); 其中,month是一个0到11的整数,对应1月到12月…

    JavaScript 2023年6月10日
    00
  • bootstrapValidator bootstrap-select验证不可用的解决办法

    下面是”bootstrapValidator bootstrap-select验证不可用的解决办法”的完整攻略: 问题描述 在使用 bootstrapValidator 和 bootstrap-select 插件的过程中,有时会出现 select 标签不能正常验证的问题。 解决方法 禁用 bootstrap-select 插件默认样式 bootstrap-s…

    JavaScript 2023年6月10日
    00
  • Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结

    关于 Vue 指令 v-for 遍历输出 JavaScript 数组及 JSON 对象的常见方式小结,我来给您详细讲解一下。 1. 遍历 JavaScript 数组 (1)遍历数组并输出 在 Vue 中可以使用 v-for 指令对 JavaScript 数组进行遍历,并输出数组的每一项内容。语法格式如下: <ul> <li v-for=&q…

    JavaScript 2023年5月27日
    00
  • webpack output.library的16 种取值方法示例

    下面我将为你详细讲解关于“webpack output.library的16种取值方法示例”的完整攻略。 首先,我们需要了解output.library的含义。output.library是指将你的一些 JavaScript 代码打包到一个或多个库(library)中,使得其在浏览器环境或 Node.js 环境中能够被其他地方引用和使用。它的取值方式是一个字…

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