当前位置: 首页 > news >正文

2022年第十三届蓝桥杯web开发—东奥大抽奖【题目、附官方解答】

冬奥大抽奖

介绍

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

准备

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

├── 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 是最终实现的效果图。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DbCwBB6k-1680839807446)(assets/image-20230407114650-im3ncm4.png)]

目标

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

  1. 点击开始后,以 classli1 的元素为起点,黄色背景(.active 类)在奖项上顺时针转动。
  2. 当转动停止后,将获奖提示显示到页面的 idaward 元素中。获奖提示必须包含奖项的名称, 该名称需与题目提供的名称完全一致
  3. 转动时间间隔和转动停止条件已给出,请勿修改。

完成后的效果见文件夹下面的 gif 图,图片名称为 effect.gif(提示:可以通过 VS Code 或者浏览器预览 gif 图片)。

规定

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

判分标准

  • 本题完全实现题目目标得满分,否则得 0 分。

解答

我的解答

let rollTime; // 定义定时器变量用来清除定时器
let time = 0; // 转动次数
let speed = 300; // 转动时间间隔
let times; // 总转动次数// 开始按钮点击事件后开始抽奖
$("#start").on("click", function () {$("#award").text(""); //清空中奖信息times = parseInt(Math.random() * (20 - 30 + 1) + 20, 10); // 定义总转动次数,随机20-30次rolling();
});// TODO:请完善此函数
function rolling() {document.querySelector('.li1').classList.add('active')time++; // 转动次数加1clearTimeout(rollTime);rollTime = setTimeout(() => {window.requestAnimationFrame(rolling); // 进行递归动画}, speed);let liNum = 1if(time <= 8 ) liNum = time;else if(time >= 9 && time <= 17) liNum = time - 8;else if(time >= 18 && time <= 24) liNum = time - 16;else if(time >= 25&& time <= 36) liNum = time - 24;console.log(liNum,time);// 删除颜色
const list = document.querySelectorAll('li')
for(const imte of list) imte.classList.remove('active')// 添加document.querySelector(`.li${liNum}`).classList.add('active')// time > times 转动停止if (time > times) {clearInterval(rollTime);time = 0;return;}
}

问题一:对于liNum的控制不够灵活!!

因为这里的li的num只有1 ~ 8,但是这个time又一直是递增的,所以就需要进行重置操作

但是我这里仅仅只是从数学的角度考虑这个问题,虽然也能通过,但是这样的代码十分不好,一旦修改了对应的随机数,将需要添加代码逻辑

问题二:未使用jQuery对代码进行优化

因为我本人对于jQuery使用的较少,所以并没有直接一上手就开始用jQuery操作,而是采用JS的原生方法进行实现。存在优化空间

官方答案

let rollTime; // 定义定时器变量用来清除定时器
let time = 0; // 转动次数
let speed = 300; // 转动时间间隔
let times; // 总转动次数// 开始按钮点击事件后开始抽奖
$("#start").on("click", function () {$("#award").text(""); //清空中奖信息times = parseInt(Math.random() * (20 - 30 + 1) + 20, 10); // 定义总转动次数,随机20-30次rolling();
});// TODO:请完善此函数
let num = 0;
function rolling() {num ++;if(num >= 9){num = 1;}time++; // 转动次数加1clearTimeout(rollTime);rollTime = setTimeout(() => {window.requestAnimationFrame(rolling); // 进行递归动画}, speed);$('.li' + num).addClass('active').siblings().removeClass('active')console.log(num);// time > times 转动停止if (time > times) {clearInterval(rollTime);$('#award').text($('.active').text())time = 0;time = 0;return;}
}

巧妙点一:直接重置!!

上面我自己的代码对于这个num的控制十分粗糙,但是官方答案对于这个数的控制,直指本源!

我们仅需要让其自增,并在出界时及时拉回来即可(num = 1)

巧妙点二:通过siblings直接修改所有的兄弟节点

很巧妙的是,这里直接采用siblings删除兄弟节点,这样的代码会更加简洁、高效

虽然本质上就是循环删除,但是这里直接采用函数去remove还是值得学习的

相关文章:

2022年第十三届蓝桥杯web开发—东奥大抽奖【题目、附官方解答】

冬奥大抽奖 介绍 蓝桥云课庆冬奥需要举行一次抽奖活动&#xff0c;我们一起做一个页面提供给云课冬奥抽奖活动使用。 准备 开始答题前&#xff0c;需要先打开本题的项目代码文件夹&#xff0c;目录结构如下&#xff1a; ├── css │ └── style.css ├── effect.g…...

一份两年前一个月的工作经历没写在简历上,背调前主动坦白,却被背调公司亮了红灯,到手的offer没了!...

只因为简历上漏写了一份一个月的工作&#xff0c;就被亮了背调红灯&#xff0c;这公平吗&#xff1f;一位网友就被狠狠坑了一把&#xff0c;来看下他的遭遇&#xff1a;他有一份两年前、时长一个月的工作经历没写在简历上&#xff0c;背调前主动和背调公司还有招聘方hr都说了这…...

C++游戏分析与破解方法介绍

1、C游戏简介 目前手机游戏直接用C开发的已经不多&#xff0c;使用C开发的多是早期的基于cocos2dx的游戏&#xff0c;因此我们这里就以cocos2d-x为例讲解C游戏的分析与破解方法。 Cocos2d-x是一个移动端游戏开发框架&#xff0c;可以使用C或者lua进行开发&#xff0c;也可以混…...

食堂总是拥挤不堪?解决用餐拥挤,教你一招

随着近几年科技的快速发展&#xff0c;行业里出现了很多新的名词&#xff0c;比如智慧社区、智慧旅游、智慧建筑&#xff0c;那么智慧食堂是什么呢&#xff1f;它又是如何实现全自助、全智能消费&#xff1f; 在先进的智能技术以及市场需求带动下&#xff0c;智慧食堂经历了由传…...

ubuntu系统安装时 MBR和GPT的区别

主引导记录&#xff08;Master Boot Record &#xff0c; MBR&#xff09;是指一个存储设备的开头 512 字节。它包含操作系统的引导器和存储设备的分区表。   全局唯一标识分区表&#xff08;GUID Partition Table&#xff0c;缩写&#xff1a;GPT&#xff09;是一个实体硬盘…...

我在windows10下,使用msys64 mingw64终端

系列文章目录 文章目录系列文章目录前言一、MSYS2是什么&#xff1f;前言 msys2官网 MSYS2 &#xff08;Minimal SYStem 2&#xff09; 是一个MSYS的独立改写版本&#xff0c;主要用于 shell 命令行开发环境。 同时它也是一个在Cygwin &#xff08;POSIX 兼容性层&#xff09…...

个人2023FALL CS申请总结(PhD/MPhil/保研夏令营)

个人2023FALL CS申请总结&#xff08;PhD/MPhil/保研夏令营&#xff09;写在最前个人BG及申请情况个人BG申请情况MPhilPhD收获一句话总结&#xff1a;心态爆炸没用&#xff0c;脸皮够厚够勇就行 写在最前 真是一场恶战。有几天&#xff0c;我每天早上都海投几封套瓷邮件&…...

【优化算法】使用遗传算法优化MLP神经网络参数(TensorFlow2)

文章目录任务查看当前的准确率情况使用遗传算法进行优化完整代码任务 使用启发式优化算法遗传算法对多层感知机中中间层神经个数进行优化&#xff0c;以提高模型的准确率。 待优化的模型&#xff1a; 基于TensorFlow2实现的Mnist手写数字识别多层感知机MLP # MLP手写数字识别…...

CAM类激活映射 |神经网络可视化 | 热力图

文章目录前言&#xff1a;安装库&#xff1a;分类案例--ResNet50分割案例AttributeError: ‘tuple‘ object has no attribute ‘cpu‘RuntimeError: grad can be implicitly created only for scalar outputsTypeError: cant convert cuda:0 device type tensor to numpy. Use…...

RecyclerView+BaseRecyclerViewAdapterHelper显示不全只显示第一行item的解决问题

RecyclerViewBaseRecyclerViewAdapterHelper显示不全只显示第一行item&#xff0c;我懵了…&#xff0c;我不说多&#xff0c;直接说吧 先看一下适配器代码中的convert()方法&#xff1a; class MineRadioAdapter(layoutResId: Int R.layout.item_my_live) :BaseQuickAdapte…...

解决后端无法对前端的ajax请求重定向

本章目录&#xff1a; 问题描述 AJAX请求后端直接重定向失败解决方案 后端拦截请为响应头添加重定向标志后端拦截器为响应头添加重定向路径前端响应拦截器获取响应头数据&#xff0c;并通过location.href url 完成页面跳转一、问题描述 本来想在拦截器里设置未登录用户访问指…...

【Python】1分钟就能制作精美的框架图?太棒啦

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、准备二、基本使用与例子1.初始化与导出2.节点类型3.集群块4.自定义线的颜色与属性总结前言 Diagrams 是一个基于Python绘制云系统架构的模块&#xff0c;它能…...

淘宝必备的补单技巧及注意事项!

补单&#xff0c;是优化善后的s单。单只是模拟用户的购物习惯&#xff0c;而补单同时还要模拟整个店铺的综合数据&#xff0c;包括点击率、转化率等等&#xff0c;补到略高于同行、竞品的平均数据时&#xff0c;淘宝会判断为买家比较喜欢你的商品&#xff0c;从而给你更多推荐机…...

【实用篇】SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud分布式

文章目录一、服务拆分1.1 服务拆分Demo1.2 微服务远程调用二、Eureka2.1 Eureka原理2.2 Eureka-server服务搭建2.3 eureka-client服务注册2.4 eureka-client服务复制2.5 eureka服务发现三、Ribbon负载均衡3.1 负载均衡原理3.2 负载均衡策略3.3 自定义负载均衡策略3.4 饥饿加载与…...

私人飞机、公务机包机会成为富豪圈的主流出行方式吗?

从炫耀性消费到按需使用&#xff0c;私人飞机的消费群体正在被拓宽&#xff0c;但离“成为主流”还有一段距离。“时间就是金钱”为有钱人消费私人飞机提供合理动机&#xff0c;而这群高净值人群的数量增长则成为撑起市场基本面。据相关数据显示&#xff0c;2018年全球超级富豪…...

Oracle组织架构

组织架构 &#xff08;一&#xff09;业务组&#xff08;BG&#xff09; &#xff08;二&#xff09;法律实体&#xff08;LE&#xff09; &#xff08;三&#xff09;业务实体&#xff08;OU&#xff09; &#xff08;四&#xff09;库存组织&#xff08;INV&#xff09; …...

最小公倍数

目录 最小公倍数 程序设计 程序分析 最小公倍数 【问题描述】给定两个正整数,计算这两个数的最小公倍数。 【输入形式】输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数. 【输出形式】 对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。…...

二叉树的后序遍历(力扣145)

目录 题目描述&#xff1a; 解法一&#xff1a;递归法 解法二&#xff1a;迭代法 解法三&#xff1a;Morris遍历 二叉树的后序遍历 题目描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root …...

《Effective C++》读书纪实 -- 诸君同享

文章目录《Effective C》是一本经典的C编程指南&#xff0c;共包含50条C编程的最佳实践。 确定你的构造函数的行为 在构造函数中&#xff0c;应该尽可能地避免调用虚函数、非静态成员函数和虚基类的函数。 尽量使用const、enum、inline替换#define 使用const、enum、inline可以…...

【云原生】K8S-ConfigMap 实现应用和配置分离

文章目录前言ConfigMap 背景ConfigMap 创建方式ConfigMap 的使用使用 ConfigMap 的注意事项总结前言 Kubernetes 是目前最流行的容器编排系统之一&#xff0c;它提供了丰富的功能来支持容器化应用程序的管理和部署。 ConfigMap 是 Kubernetes 中重要的资源对象&#xff0c;用…...

java -测距工具(经纬度)

代码 /*** 测距工具* author qb*/ public class DistanceUtils {/*** 赤道半径*/private static final double EARTH_RADIUS 6378.137;private static double rad(double d) {return d * Math.PI / 180.0;}/*** Description : 通过经纬度获取距离(单位&#xff1a;米)* Group…...

postgres分区表的创建-基于继承

参考文档&#xff1a; http://postgres.cn/docs/12/ddl-partitioning.html 创建基于继承的分区表的步骤 1 创建父表 2 创建子表&#xff0c;从父表继承过来 3 创建函数及触发器&#xff0c;使插入的数据根据规则&#xff0c;插入到对应的子表中 -- 创建父表 CREATE TABLE a…...

Docker应用部署

文章目录Docker 应用部署一、部署MySQL二、部署Tomcat三、部署Nginx四、部署RedisDocker 应用部署 一、部署MySQL 搜索mysql镜像 docker search mysql拉取mysql镜像 docker pull mysql:5.6创建容器&#xff0c;设置端口映射、目录映射 # 在/root目录下创建mysql目录用于存…...

使用golang实现日志收集系统的logagent

整体架构 参考 七米老师的日志收集项目 主要用go实现logagent的部分&#xff0c;logagent的作用主要是实时监控日志追加的变化&#xff0c;并将变化发送到kafka中。 之前我们已经实现了 用go连接kafka并向其中发送数据&#xff0c;也实现了使用tail库监控日志追加操作。 我们…...

小红书点赞不显示怎么回事?小红书笔记评论被吞怎么办

小红书作为一个互联网产品&#xff0c;是一个软件。既然是软件就会有一定的程序漏洞&#xff0c;这是无法避免的。但是很多时候其实并不一定是漏洞的问题。今天就来和大家谈谈小红书点赞不显示怎么回事&#xff0c;小红书评论被吞又是怎么一回事&#xff0c;这些难道都是程序性…...

地址变换和缺页置换习题

1.设某进程页面的访问序列为4,3,2,1,4,3,5,4,3&#xff0c;2,1,5&#xff0c;当分配给该进程的内存页框数分别为3和4时&#xff0c;对于先进先出&#xff0c;最近最少使用&#xff0c;最佳页面置换算法&#xff0c;分别发生多少次缺页中断&#xff1f; 答&#xff1a; 分配的…...

PAT 乙级 1010 一元多项式求导(解题思路+AC代码)

题目&#xff1a; 设计函数求一元多项式的导数。&#xff08;注&#xff1a;xn&#xff08;n为整数&#xff09;的一阶导数为nxn−1。&#xff09; 输入格式: 以指数递降方式输入多项式非零项系数和指数&#xff08;绝对值均为不超过 1000 的整数&#xff09;。数字间以空格分…...

一维河流污染持续排放模拟(水污染扩散)

一、处理河道转换为geojson数据 以淮河为例处理示例数据&#xff1a; {"type": "FeatureCollection","features": [{"geometry": {"coordinates": [[[115.5803,34.4982],[115.5922,34.498],[115.6061,34.4994],[115.6203,…...

数据优化 | CnOpenDataA股上市公司招聘数据

就业是经济的“晴雨表”&#xff0c;更是社会的“稳定器”。稳定和扩大就业一直是国家宏观调控的重要目标&#xff0c;2021年中央经济工作会议八次提到“就业”这一关键词。在新冠肺炎疫情蔓延、世界经济下行及人口老龄化加快等多重因素的叠加之下&#xff0c;稳就业保民生成为…...

nacos和eureka的区别

nacos和eureka的区别 Eureka是什么 Eureka详解Nacos是什么 Nacos详解Nacos和Eureka的区别 CAP理论连接方式服务异常剔除操作实例方式自我保护机制 Eureka是什么 Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心,由Netflix公司与2012将其开源出来,Eureka基于RE…...

wordpress paypal插件/站长工具seo综合查询怎么关闭

我的开发环境是Win8VS2013&#xff0c;数据库环境是MySQL(WampServer)1、下载MySQL Connector/Net 6.8.3地址&#xff1a;http://dev.mysql.com/downloads/connector/net/还需要下载一个MySQL for VisualStudio版本&#xff0c;用于在VS中可以在数据源中引用MySQL地址&#xf…...

培训网站模板/百度搜索榜

hdu_2242 题目大意&#xff1a;求将一张无向图&#xff08;n个点&#xff0c;m条边&#xff09;移除一条边分为不连通两部分&#xff0c;使得两部分的点权和最接近&#xff0c;若无法分为两部分&#xff0c;则输出impossible。 题解&#xff1a;拿到题面还算清晰&#xff0c;就…...

wordpress卡片式/青岛百度竞价

1、如果想使用IIS配置PHP的话&#xff0c;那么需要选择NonThreadSafe(NTS)版本的PHP2、32位操作系统、64位操作系统&#xff0c;分别表示为X86、X643、VC&#xff0c;即VisualC&#xff0c;VC9和VC11分别为VisualStudio2008和VisualStudio2012编译出来的版本因此在下载带有“VC…...

玉环市建设工程检测中心网站/网络营销主要有哪些特点

单行注释&#xff1a; CTRL / 当行取消注释&#xff08;一样的&#xff09;&#xff1a; CTRL / 多行注释&#xff1a; CTRL SHIFT / 多行取消注释&#xff08;斜杠换成反斜杠&#xff09;&#xff1a; CTRL SHIFT \ 转载于:https://www.cnblogs.com/lijins/p/100994…...

怎么用ai做企业网站框架/网络推广用什么软件好

合金体系的势函数除了eam势&#xff0c;还有meam势。在新版本的lammps中&#xff0c;meam势类型已经改为meam/c&#xff0c;本文主要介绍meam/c势的设置方法。 和普通的势函数文件不同&#xff0c;meam/c势有两个势函数文件&#xff1a;library.meam和**.meam&#xff0c;**表示…...

建模培训多少钱/广州aso优化公司 有限公司

这位博主在上一节课,成功实现了登陆状态嵌入到接口库的功能,本节会继续嵌入到用例库中。 要做的事情有以下几点: 1.用例库-大用例-步骤小用例 的设置页面上,加入一个个的登陆状态开关,方法和接口库调试层类似 2.在后端实际去调用接口的小用例方法中,加上关于登陆态的判断…...