[ 蓝桥杯Web真题 ]-冬奥大抽奖

news2024/11/26 16:59:37

目录

介绍

准备

目标

规定

思路

知识补充

解法参考


介绍

蓝桥云课庆冬奥需要举行一次抽奖活动,我们一起做一个页面提供给云课冬奥抽奖活动使用。

准备

开始答题前,需要先打开本题的项目代码文件夹,目录结构如下:

├── css
│   └── style.css
├── effect.gif
├── index.html
└── js
    ├── index.js
    └── jquery.js

其中:

  • css/style.css 是样式文件 。
  • index.html 是主页面。
  • js/jquery.js 是 jQuery 文件。
  • js/index.js 是需要补充的 js 文件。
  • effect.gif 是最终实现的效果图。

注意:打开环境后发现缺少项目代码,请手动键入下述命令进行下载:

cd /home/project
wget https://labfile.oss.aliyuncs.com/courses/9791/05.zip && unzip 05.zip && rm 05.zip

在浏览器中预览 index.html 页面效果如下:

初始效果

目标

找到 index.js 中 rolling 函数,使用 jQuery 或者 js 完善此函数,达到以下效果:

1.点击开始后,以 class 为 li1 的元素为起点,黄色背景(.active 类)在奖项上顺时针转动。

2.当转动停止后,将获奖提示显示到页面的 id 为 award 元素中。获奖提示必须包含奖项的名称,该名称需与题目提供的名称完全一致。

3.转动时间间隔和转动停止条件已给出,请勿修改。

规定

  • 转动时间间隔和转动停止条件已给出,请勿修改。
  • 请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径等。
  • 请勿修改项目中提供的 idclass、函数名等名称,以免造成无法判题通过。
  • 先自己做一下吧:传送门

思路

这道题目主要需要使用到jQuery的知识点,使用jQuery来进行相关的操作,类名的添加以及删除等,DOM中文字的获取。类名的添加使用addClass,类名的删除使用removeClass。兄弟节点的获取使用siblings()方法。

知识补充

选择器

Jquery中的后代选择器:我们使用 $("#father p") 来选择 id 名为 father 的 div 元素中的所有后代 p 元素。

子代选择器:我们使用 "#father>p" 只选择出 "id="father" 的子代 p 元素,即儿子节点,这就是它和后代选择器的区别

兄弟选择器:$(“M~N”);

相邻选择器:$(“M+N”); (选择下一个兄弟节点 N)

属性选择器:

伪类选择器:

绑定事件

绑定事件:jQuery对象.on(事件类型, 事件处理函数);

jQuery对象.bind(事件类型, 事件处理函数);

创建元素节点

$(“<标签名>文本内容</标签名>”);

$(“<标签名 属性=‘属性值’>文本内容</标签名>”);

 var div = $(
            "<div style='width:50px; height:50px; background-color: #ddffbc'>嗨</div>"
          ); // 创建带有属性的元素节点
          $("body").append(div); // 将创建的 div 元素放入 body 中

元素的插入
prepend() 与 prependTo() 是在元素子级的开头插入元素。

// 在 A 元素的子级最前面的位置插入B
$(A).prepend(B);

// 在 A 元素的子级最前面的位置插入B
$(B).prependTo(A);

append() 与 appendTo() 是在元素子级的尾部插入元素。

before() 与 insertBefore() 是在该元素的前面插入元素。

after() 与 insertAfter() 是在元素的后面插入元素。

empty 方法是用来清空指定元素的后代元素和内容的。

replaceWith 方法和 replaceAll 方法都可以用来把指定元素替换成其他元素,只是在使用格式上有些差别。

// 将 A 替换为 B
$(A).replaceWith(B);

// 将 A 替换为 B
$(B).replaceAll(A);

元素的遍历

$().each(function (index, element) {});

each 方法会接收一个匿名函数作为参数,函数中的 index 表示元素的索引号;而函数中的 element 表示当前元素。

attr 方法可以用来获取指定元素的属性值,也可以用来设置指定属性的属性值。

jQuery对象.attr("属性名"); // 获取属性
jQuery对象.attr("属性名", "属性值"); // 修改属性

removeAttr 方法可以删除指定元素的某个属性。

toggleClass 方法是用来切换类选择器的。通过使用 toggleClass 让 div 元素的 circle1 样式在添加和移除之间切换,没有 circle1 这个类就加上,有则移除。

val 方法用于获取表单元素的值,也可以给表单元素设置值。

$().prev(); // 查找指定元素前向第一个元素
$().preAll(); // 查找指定元素前向所有元素
$().next(); // 查找指定元素的第一个后向兄弟元素
$().nextAll(); // 查找指定元素的所有后向兄弟元素
$().siblings();//查找所有兄弟元素
jQuery对象.children();//获取元素的儿子节点
jQuery对象.find(selector);//查找到指定元素的所有后代元素
$().hasClass("类名");//用来判断指定元素是否包含该类名的元素
$().eq(n);//使用 eq 方法可以实现下标过滤
$().is(selector);//使用 is 方法来判断指定元素中是否有符合条件的存在
$().not(selector|function)//用 not 方法可以选择不符合条件的元素。

解法参考

let num = 0;

function rolling() {
  time++; // 转动次数加1
  num++;
  if(num>8){
    num=1;
  }
  $(".li"+num).addClass('active').siblings().removeClass('active');
  clearTimeout(rollTime);
  rollTime = setTimeout(() => {
    window.requestAnimationFrame(rolling); // 进行递归动画
  }, speed);

  // time > times 转动停止
  if (time > times) {
    $("#award").text(`恭喜你抽到了${$(".li"+num).text()}`); 
    clearInterval(rollTime);
    num = 0;
    time = 0;
    return;
  }
}

我们先声明一个num赋值为0,用于来进行追踪转盘中转到的元素,当开始进行转动时,先将num增加,当num大于8时,说明转了一圈,则给它赋值为1,回到起点。然后为对应的元素添加类,使用addClass来进行增加,其他的兄弟节点去除到该类,使用removeClass,兄弟节点的获取直接调用siblings()方法。

当停止转动时,使用text()方法来获取元素的文本。最后再将num重新赋值为0

好啦,本文就到这里啦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1301005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt设置类似于qq登录页面

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QWindow> #include <QIcon> #include <QLabel> #include <QMovie> #include <QLineEdit> #include <QPushButton>QT_BEGIN_NAMESPACE namespace Ui { class…

python:五种算法(DBO、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、五种算法简介 1、蜣螂优化算法DBO 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、粒子群优化算法PSO 5、遗传算法GA 二、5种算法求解23个函数 &#xff08;1&#xff09;23个函数简介 参考文献&#xff1a; [1] Yao X, Liu Y, Lin G M. Evolutionary programming made…

RF射频干扰被动型红外传感器误判分析及整改事例

1.1 什么是红外传感 测量系统是以红外线为介质&#xff0c;探测可分成为光子和热探测器。 简洁原理就是利用产生的辐射与物质相互作用后呈现出来的物理效应就是它的基本原理。 1.2 红外按方式分类 &#xff08;1&#xff09;被动型红外&#xff1a;本身不会向外界辐射任何能量…

红队攻防实战之phpmyadmin-RCE集锦

世界上只有一种真正的英雄主义&#xff0c;那就是认清了生活的真相后&#xff0c;仍然热爱她 phpmyadmin远程代码执行漏洞 访问该页面&#xff0c;存在弱口令 爆破进入后发现该php版本以及phpmyadmin版本信息&#xff0c;该版本存在远程命令执行漏洞。 使用exp利用此漏洞&am…

建立个人学习观|地铁上的自习室

作者&#xff1a;向知 如果大家有机会来北京&#xff0c;可以来看看工作日早上八九点钟&#xff0c;15 号线从那座叫“顺义”的城市通向“望京”的地铁&#xff0c;你在那上面&#xff0c;能看到明明白白的&#xff0c;人们奔向梦想的模样。 一、地铁上的自习室 我在来北京之前…

RT-Thread学习笔记(六):RT_Thread系统死机日志定位

RT_Thread系统死机日志定位 一、RT_Thread系统死机日志定位二、Cortex-M3 / M4架构知识2.1 Cortex-M3 / M4架构概述2.2 寄存器用途 三、排查步骤 一、RT_Thread系统死机日志定位 RT-Thread 系统发生hardfault死机时&#xff0c;系统默认会打印出一系列寄存器状态帮助用户定位死…

[GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练

前言 OpenAI的创始人之一,大神Andrej Karpthy刚在微软Build 2023开发者大会上做了专题演讲:State of GPT(GPT的现状)。 他详细介绍了如何从GPT基础模型一直训练出ChatGPT这样的助手模型(assistant model)。作者不曾在其他公开视频里看过类似的内容,这或许是OpenAI官方…

大数据技术7:基于StarRocks统一OALP实时数仓

前言&#xff1a; 大家对StarRocks 的了解可能不及 ClickHouse或者是远不及 ClickHouse 。但是大家可能听说过 Doris &#xff0c;而 StarRocks 实际上原名叫做 Doris DB &#xff0c;他相当于是一个加强版的也就是一个 Doris ,也就是说 Doris 所有的功能 StarRocks 都是有的&a…

2023/12/10总结

学习 WebSocket 一共四种方法&#xff0c;传递数据是要通过JSON格式传递 前端 onopen 在连接时 onmessage 收到消息时 通常携带参数 event &#xff0c;event.data 是消息 onerror 发生错误时 onclose 关闭连接时 发送消息 需要安装 vue-native-websocket 包 pnpm i vue-n…

【HarmonyOS开发】控件开发过程中,知识点记录

1、问题记录及解决方案 1.1 资源&#xff08;Icon&i18n&#xff09;问题 控件&#xff1a;只有一个JS文件&#xff0c;不会将任何资源型文件&#xff08;图片、字体、默认文字等&#xff09;打包到SO中。因此&#xff0c;当我们开发控件时&#xff0c;需要将需要使用到的资…

从零构建属于自己的GPT系列5:模型本地化部署(文本生成函数解读、模型本地化部署、文本生成文本网页展示、代码逐行解读)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1&#xff1a;数据预处理 从零构建属于自己的GPT系列2&#xff1a;模型训…

H264码流结构

视频编码的码流结构是指视频经过编码之后得到的二进制数据是怎么组织的&#xff0c;或者说&#xff0c;就是编码后的码流我们怎么将一帧帧编码后的图像数据分离出来&#xff0c;以及在二进制码流数据中&#xff0c;哪一块数据是一帧图像&#xff0c;哪一块数据是另外一帧图像。…

CompletableFuture异步多任务最佳实践

简介 CompletableFuture相比于Java8的并行流&#xff0c;对于处理并发的IO密集型任务有着得天独厚的优势&#xff1a; 在流式编程下&#xff0c;支持构建任务流时即可执行任务。CompletableFuture任务支持提交到自定义线程池&#xff0c;调优方便。 本文所有案例都会基于这样…

计算机网络:数据链路层之差错控制、奇偶校验码、CRC循环冗余码、海明码

带你度过期末难关 文章目录 一、差错控制 1、冗余编码2、编码VS编码二、检错编码 1、奇偶校验码2、CRC循环冗余码三、纠错编码————海明码 海明距离1、确定校验码位数r2、确定校验码和数据的位置3、求出校验码的值4、检错并纠错 纠错的方法一&#xff1a;纠错方法二&#x…

正则表达式(9):扩展正则表达式

正则表达式&#xff08;9&#xff09;&#xff1a;扩展正则表达式 小结 本博文转载自 前文中一直在说&#xff0c;在Linux中&#xff0c;正则表达式可以分为”基本正则表达式”和”扩展正则表达式”。 我们已经认识了”基本正则表达式”&#xff0c;现在&#xff0c;我们来认…

想学编程,但不知道从哪里学起,应该怎么办?

怎样学习任何一种编程语言 我将教你怎样学习任何一种你将来可能要学习的编程语言。本书的章节是基于我和很多程序员学习编程的经历组织的&#xff0c;下面是我通常遵循的流程。 1&#xff0e;找到关于这种编程语言的书或介绍性读物。 2&#xff0e;通读这本书&#xff0c;把…

基于深度学习的超分辨率图像技术一览

超分辨率(Super-Resolution)即通过硬件或软件的方法提高原有图像的分辨率&#xff0c;图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题&#xff0c;在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。 SR取得了显著进步。一般可以将现有…

30 张图解 HTTP 常见的面试题

前言 在面试过程中&#xff0c;HTTP 被提问的概率还是比较高的 我搜集了 5 大类 HTTP 面试常问的题目&#xff0c;同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的&#xff0c;通过问答 图解的形式由浅入深的方式帮助大家进一步的学习和理解 HTTP 协议。 HTTP 基本概…

持续集成交付CICD:使用Maven命令上传Nexus制品

目录 一、实验 1.使用Maven命令上传Nexus制品&#xff08;第一种方式&#xff09; 2.使用Maven命令上传Nexus制品&#xff08;第二种方式&#xff09; 一、实验 1.使用Maven命令上传Nexus制品&#xff08;第一种方式&#xff09; &#xff08;1&#xff09;指定一个 hoste…

Blender学习--制作带骨骼动画的机器人

1. 首先创建一个机器人模型 时间关系&#xff0c;这部分步骤有时间补充 2. 然后为机器人创建一副骨架 时间关系&#xff0c;这部分步骤有时间补充 3.骨骼绑定 切换到物体模式&#xff0c;选中机器人头部&#xff0c;Shift选中骨骼&#xff0c;切换到姿态模式&#xff0c;&am…