抽奖了!快看,中奖的是不是你!

简介: 本文主要介绍抽奖程序


网络异常,图片无法展示
|


hello 大家好,🙎🏻‍♀️🙋🏻‍♀️🙆🏻‍♀️


我是一个热爱知识传递,正在学习写作的作者,ClyingDeng 凳凳!

带大家手撸一个抽奖程序!


评论有奖!评论有奖!评论有奖!重要的事情说三遍!


🙆‍♀️让随机数跑起来


首先,想让随机数跑起来,得先有个随机数啊! 我们先将抽奖的人数名字信息放到一个数组中,再生成一个数组长度以内的随机数数字。


let data = ref([
   {
     name: 'Nancy',
     img: './assets/imgs/1.jpeg',
   },
    ....
   {
     name: 'Aarn',
     img: './assets/imgs/12.jpeg',
   },
])
function run() {
  let random = Math.floor(Math.random() * data.value.length)
  lucky.value = data.value[random]
}


通过生成随机数的random,来获取数组中的随机一个用户信息。


我们想让随机数不断执行,可以通过定时器的方式。每隔100毫秒让定时器重新获取一个随机用户。


let timer: number | null = null
timer = setInterval(() => {
  run()
}, 100)


这样我们在页面上就可以看到用户的姓名在页面上随机展示。


网络异常,图片无法展示
|


🎯开始 End 停止


在页面上添加两个按钮,用于开始抽奖和停止抽奖。


接着上步走,我们可以看到页面是一进来就开始随机抽取用户,升级一下,我们在点击开始按钮时,在手动开启定时器。但是这样可能会点击多次的开始按钮,因此,我们还需要判断一下,如果定时器已经开启,那么就不做任何操作。


在我们点击停止时,也只需要将定时器手动清除,并将绑定的变量回收即可。


function start() {
  if (timer) return
  timer = setInterval(() => {
    run()
  }, 100)
}
function stop() {
  if (timer) clearInterval(timer)
  timer = null
}


可以看到,开始和停止就这样完美解决了!


网络异常,图片无法展示
|


🤍🖤🤎💜💙💚💛🧡💖抽奖


美化一下页面。我们可以将用户的头像展示到页面中:


网络异常,图片无法展示
|


完成逻辑代码:


<template>
  <div class="show">
    <div class="title">
      幸运用户
    </div>
    <div class="img" v-if="lucky.img">
      <img :src="lucky.img" alt="" />
    </div>
    <div class="name">{{ lucky.name }}</div>
  </div>
  <button @click="start">start</button>
  <button @click="stop">stop</button>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue'
export default defineComponent({
  setup() {
    let data = ref([
      {
        name: 'Nancy',
        img: './assets/imgs/1.jpeg',
      },
      ...
      {
        name: 'Aarn',
        img: './assets/imgs/12.jpeg',
      },
    ])
    let lucky = ref({})
    let timer: number | null = null
    function start() {
      if (timer) return
      timer = setInterval(() => {
        run()
      }, 100)
    }
    function run() {
      console.log(data.value.length)
      let random = Math.floor(Math.random() * data.value.length)
      lucky.value = data.value[random]
    }
    function stop() {
      console.log('stop')
      if (timer) clearInterval(timer)
      timer = null
    }
    return { lucky, start, stop }
  },
})
</script>


至此,我们的抽奖小demo就完成拉! ✌✌✌


网络异常,图片无法展示
|


感兴趣的同学可以关注我哦!会持续输出相关前端知识哦(●'◡'●)。 如果不足,请多指教。


🎉🎉🎉互动有奖


最后,因为凳凳有幸申请到了 请查收|你有一次免费申请掘金周边礼物的机会活动的名额,如果评论区超过 10 人互动,截止9月12日中午12点,我将在评论区随机抽取一位幸运用户,赠送掘金新版徽章 2 枚(不需要承担运费哦)😁!


划重点👇

所有看到该文章的童鞋都可以在评论区发表评论哦!

赶快行动起来吧!🤗🤗🤗

为保证公正公平,待到9月12截止后,我会将所有在评论区留言的同学名单放入到抽奖程序中,展示抽取幸运用户的视频上传至此。


🎊🎊🎊开奖拉


总结拉:参与评论且有效的一共55位童鞋哦。

由于需要转动画,凳凳尽量控制在10s左右的哦!一次抽取完成!

恭喜幸运用户:世界太精彩!🎉🎉🎉

网络异常,图片无法展示
|

目录
相关文章
|
监控 容灾 定位技术
云服务器的容灾方案
云服务器的容灾方案
|
JSON 数据格式 索引
记一次ES节点扩容、数据迁移实践
ElasticSearch、ES数据迁移、ES扩容
14223 1
|
11月前
探究HTTP动态代理跟隧道代理的显著特点有哪些
随着科技发展,越来越多企业需要使用代理。HTTP动态代理基于短效动态IP,适合对IP数量和品质要求高的用户;隧道代理则以高匿名、便捷、多并发为特点,适用于自动切换IP的客户。选择时需根据实际需求决定,HTTP动态代理成本较低,而隧道代理更方便但价格较高。
262 24
|
10月前
|
人工智能 Cloud Native 安全
AI云全面支撑大模型落地!一文看完2025企业用云十大趋势
AI云全面支撑大模型落地!一文看完2025企业用云十大趋势
891 1
|
Java Maven Spring
SpringBoot项目创建失败或无法启动,启动报错时的常见问题及解决方案
文章列举了在IDEA中创建Spring Boot项目时可能遇到的常见问题及其解决方案,如项目不被识别为Maven项目、依赖未找到或报红、JDK版本不一致和POM文件中的Jar包下载失败等问题。
4465 0
SpringBoot项目创建失败或无法启动,启动报错时的常见问题及解决方案
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:跨平台模型移植与部署
【7月更文挑战第10天】 使用Python实现深度学习模型:跨平台模型移植与部署
893 1
|
XML IDE Java
JavaFX 教程
JavaFX 教程
1105 1
|
Web App开发 JavaScript 前端开发
从浏览器原理出发聊聊Chrome插件
本文从浏览器架构演进、插件运行机制、插件基本介绍和一些常见的插件实现思路几个方向聊聊Chrome插件。
|
Java Linux iOS开发
8 种 Java- 内存溢出之五 -Unable to create new native thread
8 种 Java- 内存溢出之五 -Unable to create new native thread
|
消息中间件 网络协议 Java
kafka如何调优?
kafka如何调优?