[ 蓝桥杯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 是最终实现的效果图。

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

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++; // 转动次数加1num++;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.mzph.cn/news/215920.shtml

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

相关文章

甲醛处理企业网站效果如何

甲醛往往是新装房间主所担心的问题&#xff0c;而甲醛处理公司则可以处理甲醛问题&#xff0c;市场需求也比较高&#xff0c;虽然具备同城服务属性&#xff0c;但外地或连锁经营也非常适合&#xff0c;而品牌们也遇到一些痛点&#xff1a; 1、品牌宣传拓客难 甲醛处理公司也需…

公司app定制开发 ,打造专属企业移动应用

公司app定制&#xff1a;打造专属企业移动应用 在当今数字化时代&#xff0c;移动应用已经成为了人们生活中不可或缺的一部分&#xff0c;越来越多的企业也意识到了移动应用对于企业形象和业务拓展的重要性&#xff0c;为了满足企业的需求&#xff0c;公司app定制服务应运而生…

基于查表法的水流量算法设计与实现

写在前面 本文分享的是一种基于查表法的水流量的算法方案设计与实现&#xff0c;算法简单易懂&#xff0c;主要面向初学者&#xff0c;有两个目的&#xff1a;一是给初学者一些算法设计的思路引导&#xff1b;二是引导初学者学习怎样用C语言编程实现。 一、设计需求 基于“19…

C++ 中的引用

文章目录 C 引用的应用1. 修改函数中传递的参数2. 避免复制大型结构3. for 循环中修改所有对象4. for 循环中避免复制对象 References vs Pointers引用的限制使用引用的优点练习Quesition 1Question 2Question 3Question 4Question 5Question 6 如果一个变量被声明为引用&#…

Android-Framework 默认横屏、dpi设置

一、环境 高通865 Android 10 二、源码修改位置 1、修改dpi device/qcom/kona/kona.mk -116,7 116,7 TARGET_USES_RRO : true# system prop for Bluetooth SOC typePRODUCT_PROPERTY_OVERRIDES \vendor.qcom.bluetooth.sochastings \ - ro.sf.lcd_density480ro.sf.lcd_d…

Python中的logging介绍

Python中的logging模块是一个强大的、灵活的、可配置的日志记录系统。它允许你在不修改源代码的情况下记录错误和调试信息&#xff0c;同时也可以对日志信息进行各种处理&#xff0c;例如写入到文件、输出到控制台、记录到数据库等。 logging模块提供了一种用于日志记录的通用接…

液态二氧化碳储存罐远程无线监测系统

二氧化碳强化石油开采技术&#xff0c;须先深入了解石油储层的地质特征和二氧化碳的作用机制。现场有8辆二氧化碳罐装车&#xff0c;每辆罐车上有4台液态二氧化碳储罐&#xff0c;每台罐的尾部都装有一台西门子S7-200 smart PLC。在注入二氧化碳的过程中&#xff0c;中控室S7-1…

国产单片机XL32F001,价格便宜,性价比高,32位M0+内核

XL32F001芯片简介 1、是一个32位ARM架构Cortex -M0系列的单片机 2、系统工作频率最高为24MHz 3、拥有24Kbytes Flash存储器和3Kbytes SRAM 4、拥有内部24MHz和32.768MHz的RC振荡器&#xff08;HSI和LSI&#xff09;&#xff0c;拥有32.768KHz低速晶体振荡器&#xff08;LSE…

JVM内存模型+JVM类加载机制

jvm内存模型包括哪些以及各自作用 主要包括类加载 对象创建 方法调用 本地方法区 程序计数 方法区&#xff1a; class文件加载到方法区 堆&#xff1a; 对象创建在堆内存中 jvm栈&#xff1a;方法调用入栈 本地方法栈&#xff1a;主要是c写的一些方法 程序计数器&#xff1a;存…

OneNote for Windows10 彻底删除笔记本

找了超多方法&#xff0c;都没有用&#xff0c;我的OneNote都没有文件选项&#xff0c;要在OneDrive中删除&#xff0c;但是一直登不进&#xff0c;然后又找到一个方法&#xff1a; 在网页中打开Office的控制面板 "Sign in to your Microsoft account" 在“最近”一…

【强化学习-读书笔记】多臂赌博机 Multi-armed bandit

参考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. Barto强化学习与监督学习 强化学习与其他机器学习方法最大的不同&#xff0c;就在于前者的训练信号是用来评估&#xff08;而不是指导&#xff09;给定动作的好坏的。 …

第21章网络通信

网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封 装成不同的类&#xff0c;用户只要创建这些类的对象&#xff0c;使用相应的方法&#xff0c;即使不具备有关的网络支持&#xff0c;也可 以编写出高质量的网络通信程序…

2023年【危险化学品生产单位安全生产管理人员】考试题库及危险化学品生产单位安全生产管理人员考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员考试题库是安全生产模拟考试一点通总题库中生成的一套危险化学品生产单位安全生产管理人员考试技巧&#xff0c;安全生产模拟考试一点通上危险化学品生产单位安全生产管理人员作业…

【教程】制作 iOS 推送证书

如需向 iOS 设备推送数据&#xff0c;您首先需要在消息推送控制台上配置 iOS 推送证书。iOS 推送证书用于推送通知&#xff0c;本文将介绍消息推送服务支持的证书类型&#xff0c;并引导您制作 iOS 推送证书。 证书类型 消息推送服务仅支持 Apple Push Service 类型的证书。有…

react Hooks之useDebugValue

1、作用&#xff1a; 用于在开发过程中帮助开发者调试自定义 Hook。它的作用是将自定义 Hook 中的某些值暴露给 React 开发工具&#xff08;例如 React DevTools&#xff09;以便于调试。 当我们使用 React 开发工具查看组件的状态时&#xff0c;React DevTools 会从组件和其…

鸿蒙(HarmonyOS)应用开发——保存应用数据

保存应用数据 harmonyOS系统提供了四种数据存储方式 #mermaid-svg-kZlN0CFY1VGySIPo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kZlN0CFY1VGySIPo .error-icon{fill:#552222;}#mermaid-svg-kZlN0CFY1VGySIPo .…

竞赛保研 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

Android RecyclerView 动画处理 流程 原理(源码分析第二篇)

零、本文主题 本文要解决的问题&#xff1a; 1. Recyclerview 动画的实现原理是什么&#xff1f; 2. 处理的主要流程大概是怎样的&#xff1f; 一、核心原理 我们抛开代码&#xff0c;想一下&#xff0c;RecyclerView中的view动画有几种&#xff1f; 添加一个view&#xff1a;…

react Hooks之useLayoutEffect和useInsertionEffect

在介绍这两个hooks之前。让我们先对比一下useEffect、useLayoutEffect、useInsertionEffect 执行时机&#xff1a; useEffect 在组件渲染完成后执行&#xff0c;属于异步执行。useInsertionEffect 在组件渲染并插入 DOM 后执行&#xff0c;也属于异步执行。useLayoutEffect 在组…

互联网公司,哪个部门才是鄙视链最顶端?

文章目录 每日一句正能量前言财务部法务部公关部销售部前台行政IT部创意部后记 每日一句正能量 我们必须在失败中寻找胜利&#xff0c;在绝望中寻求希望。 前言 在互联网公司中&#xff0c;不同职位的鄙视链是存在的。有些职位享有高尚的地位&#xff0c;而有些则被看作是次要…