蓝桥杯(Web大学组)2022省赛真题:冬奥大抽奖

思路:

使用模板字符串,借助time的值选择添加或移除样式的盒子,由于盒子的类名最多为li9,所以要将time的值取余,且判断余数为0时,就取1,否则会获取空值报错

`.ul .li${time%9!=0?time%9:1}`

代码:
javascript 复制代码
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() {
  time++; // 转动次数加1


  //添加黄色样式的类
  document.querySelector(`.ul .li${time%9!=0?time%9:1}`).classList.add('active');
  clearTimeout(rollTime);
  rollTime = setTimeout(() => {
    //移除类
      document.querySelector(`.ul .li${time%9!=0?time%9:1}`).classList.remove('active');

    window.requestAnimationFrame(rolling); // 进行递归动画
  }, speed);

  // time > times 转动停止
  if (time > times) {
    clearInterval(rollTime);

    //将结果显示在上面
  $("#award").text(`${document.querySelector(`.ul .li${time%9!=0?time%9:1}`).innerText}`); //清空中奖信息

    time = 0;
    return;
  }
}
相关推荐
我是大卫2 小时前
【图】React源码解析-从数据结构、调度器、源码设计模式到状态计算引擎,深挖useReducer原理
前端·react.js·源码
willes2 小时前
列表中的倒计时组件
前端
LVZ2 小时前
用了半年 AI 写代码,最烦的不是代码,是环境
前端·后端·开源
polaris_tl3 小时前
一行 `compress: false`,为什么让 SSE 首包恢复实时返回
前端
海边的云3 小时前
别再让 AI 瞎改代码:一套让大模型「收敛」的前端专家 Skill》
前端
kisshyshy3 小时前
给端侧大模型装上“发动机”:React 合成事件 + 进度条组件全解
前端·react.js·node.js
hunterandroid3 小时前
DataStore 工程化实践:迁移、并发更新与异常恢复
android·前端
晓说前端3 小时前
TypeScript 核心语法进阶 —— 字面量类型与类型推论
前端·typescript
不简说3 小时前
JS 代码技巧 vol.8 — 20 个函数式编程实战,把 if/else 拍扁的骚操作
前端·javascript·面试
头茬韭菜3 小时前
4.9 SSRF 防护 — Web 工具的出站安全与私有 IP 拦截
前端·tcp/ip·安全