第十三届蓝桥杯省赛:冬奥大抽奖

冬奥大抽奖

介绍

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

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

目标

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

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

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

 思路

1.由于转动总次数超过li的个数,所以单独设了一个参数num

let num = 0;

2.num 和 time 是非同步的,当time>8时,num 会再一次轮回,从1开始,所以在num>8时,用if函数来限制:

if(num > 8){

num = 1;

}

3.要将选中的li 背景改为黄色,其余不变,可用addClass()、removeClass()、siblings()语法

语法:siblings(selector)

        用法:$(".frist").siblings(“li”)

说明:查找兄弟节点,不包括自身元素

注:想要多选一的效果,排他思想:当前元素设置样式,其余的兄弟元素清除样式。

$('.li' + num).addClass('active').siblings().removeClass('active');

4.获奖提示必须包含奖项的名称,该名称需与题目提供的名称完全一致

所以获取选中的li的active类  的 text(),此时只有选中的li 有active标签

$('#award').text("恭喜您抽中:" + $('.active').text() + "!!!!");

5.最后注意:当time = 0时,num也等于0

num = 0;

 答案代码


let rollTime; // 定义定时器变量用来清除定时器
let time = 0; // 转动次数
let speed = 300; // 转动时间间隔
let times; // 总转动次数
let num =0;


// 开始按钮点击事件后开始抽奖
$("#start").on("click", function () {
  $("#award").text(""); //清空中奖信息
  times = parseInt(Math.random() * (20 - 30 + 1) + 20, 10); // 定义总转动次数,随机20-30次
  rolling();
});

// TODO:请完善此函数
function rolling() {
  time++; // 转动次数加1
  num++;
  console.log(time,num);

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

  
  $('#award').text("恭喜您抽中:" + $('.active').text() + "!!!!");
  // time > times 转动停止
  if (time > times) {
    clearInterval(rollTime);
    time = 0;
    num = 0;
    return;
  }
}

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值