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

都江堰城乡建设局网站2023今天的新闻联播

都江堰城乡建设局网站,2023今天的新闻联播,国内网站有哪些,怎样刷新网站冬奥大抽奖 介绍 蓝桥云课庆冬奥需要举行一次抽奖活动,我们一起做一个页面提供给云课冬奥抽奖活动使用。 准备 开始答题前,需要先打开本题的项目代码文件夹,目录结构如下: ├── css │ └── style.css ├── effect.g…

冬奥大抽奖

介绍

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

准备

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

├── 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还是值得学习的

http://www.sczhlp.com/news/41868/

相关文章:

  • 汽车销售服务东莞网站建设互联网公司
  • 机械类 网站源码网络seo是什么工作
  • 网页设计期末作品要求站长工具seo综合查询官网
  • 做网站运营有前景吗sem推广外包
  • 帮做网站制作挣钱网络营销策划书应该怎么写
  • 新疆网站建设公司购买域名
  • 做网赚类网站违法吗空间刷赞网站推广
  • 动漫制作专业的学校克州seo整站排名
  • 贵州建设厅造价信息网站云服务器
  • 前台网站建设网络推广是做什么的
  • wordpress 创建页面班级优化大师app下载
  • 进下加强新闻宣传网站建设百度一下网页入口
  • 上海科技网站建设电脑网络优化软件
  • 河南省建设部官方网站网站开发公司
  • 做国外营销型网站设计营销思路八大要点
  • 自己做电影资源网站百度第三季度财报2022
  • 金华企业网站推广百度竞价的优势和劣势
  • 有什么网站可以发布个人信息淄博做网站的公司
  • 西安市城乡建设委员会网站百度域名收录提交入口
  • 大理公司网站建设广告平台
  • 网站建设项目工作分解结构全国疫情高峰感染进度查询
  • 科技有限公司可以做网站建设吗大白兔网络营销策划书
  • 手机网站建设需求文档竞价推广账户竞价托管费用
  • 公司网站首页怎么做代推广app下载
  • 你的错误处理一团糟-是时候修复它了-️
  • 浙江省住房和城乡建设厅 官方网站西安网约车平台
  • 用vs做购物网站seo页面链接优化
  • 寿县有做网站开发的吗接广告的平台
  • 如何建论坛网站谷歌竞价广告
  • 建网站的基本流程宁波seo入门教程