jquery输入数字随机抽奖特效的简单实现代码

下面是关于“jquery输入数字随机抽奖特效的简单实现代码”的完整攻略:

1. 确定页面布局

该抽奖效果需要一个输入框(用于输入抽奖人数)、抽奖按钮(用于触发抽奖)、一个抽奖区域(用于展示抽奖结果)、一个候选人列表(用于存储所有候选人信息)。

HTML 代码示例:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>抽奖</title>
  </head>
  <body>
    <input type="number" id="number" min="1" max="100" value="10">
    <button id="start">开始抽奖</button>
    <div id="result">抽奖结果</div>
    <ul id="candidates">
      <li>张三</li>
      <li>李四</li>
      <li>王五</li>
      <li>赵六</li>
    </ul>
  </body>
</html>

2. 编写抽奖逻辑

当点击“开始抽奖”按钮时,需要根据输入框中的抽奖人数进行随机抽奖。具体实现步骤如下:

2.1 获取数据

首先需要获取输入框中的抽奖人数,以及候选人列表中的所有候选人。

$(function () {
  $('#start').click(function () {
    var number = $('#number').val(); // 抽奖人数
    var candidates = $('#candidates li'); // 候选人列表
  });
});

2.2 数组随机排序

然后将所有候选人信息存入数组中,并使用 Fisher-Yates 算法进行随机排序。为了确保随机性,需要随机排序的起始位置从数组末尾开始,每次随机到的位置都放到数组末尾,逐步缩小随机范围。

$(function () {
  $('#start').click(function () {
    var number = $('#number').val(); // 抽奖人数
    var candidates = $('#candidates li'); // 候选人列表

    // 数组随机排序
    var arr = candidates.toArray();
    for (var i = arr.length - 1; i > 0; i--) {
      var j = Math.floor(Math.random() * (i + 1));
      var temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
  });
});

2.3 取出抽奖结果

接下来,从随机排序后的数组中取出前 number 个元素作为抽奖结果,以数组形式返回。在代码中用 slice 方法取出抽奖结果并用 join 方法将数组转化为字符串。

$(function () {
  $('#start').click(function () {
    var number = $('#number').val(); // 抽奖人数
    var candidates = $('#candidates li'); // 候选人列表

    // 数组随机排序
    var arr = candidates.toArray();
    for (var i = arr.length - 1; i > 0; i--) {
      var j = Math.floor(Math.random() * (i + 1));
      var temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }

    // 取出抽奖结果
    var result = arr.slice(0, number).map(function (item) {
      return item.innerText;
    }).join(',');
  });
});

2.4 展示抽奖结果

最后将抽奖结果显示在结果区域中。

$(function () {
  $('#start').click(function () {
    var number = $('#number').val(); // 抽奖人数
    var candidates = $('#candidates li'); // 候选人列表

    // 数组随机排序
    var arr = candidates.toArray();
    for (var i = arr.length - 1; i > 0; i--) {
      var j = Math.floor(Math.random() * (i + 1));
      var temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }

    // 取出抽奖结果
    var result = arr.slice(0, number).map(function (item) {
      return item.innerText;
    }).join(',');

    // 展示抽奖结果
    $('#result').text(result);
  });
});

3. 示例说明

下面给出两个示例说明:

示例1

假设我们有 20 个人参加抽奖,候选人列表如下:

<ul id="candidates">
  <li>张三</li>
  <li>李四</li>
  <li>王五</li>
  <li>赵六</li>
  <li>田七</li>
  <li>朱八</li>
  <li>刘九</li>
  <li>杨十</li>
  <li>黄十一</li>
  <li>钟十二</li>
  <li>周十三</li>
  <li>吴十四</li>
  <li>郑十五</li>
  <li>陈十六</li>
  <li>孙十七</li>
  <li>马十八</li>
  <li>韩十九</li>
  <li>朴二十</li>
  <li>丁二十一</li>
  <li>祝二十二</li>
</ul>

当输入抽奖人数为 5,并点击“开始抽奖”按钮时,页面上的抽奖结果将会显示为五个随机抽出的姓名,例如:

朴二十,吴十四,赵六,田七,祝二十二

示例2

假设我们有 30 个人参加抽奖,候选人列表如下:

<ul id="candidates">
  <li>张三</li>
  <li>李四</li>
  <li>王五</li>
  <li>赵六</li>
  <li>田七</li>
  <li>朱八</li>
  <li>刘九</li>
  <li>杨十</li>
  <li>黄十一</li>
  <li>钟十二</li>
  <li>周十三</li>
  <li>吴十四</li>
  <li>郑十五</li>
  <li>陈十六</li>
  <li>孙十七</li>
  <li>马十八</li>
  <li>韩十九</li>
  <li>朴二十</li>
  <li>丁二十一</li>
  <li>祝二十二</li>
  <li>高二十三</li>
  <li>蔡二十四</li>
  <li>曾二十五</li>
  <li>袁二十六</li>
  <li>何二十七</li>
  <li>彭二十八</li>
  <li>梁二十九</li>
  <li>史三十</li>
</ul>

当输入抽奖人数为 10,并点击“开始抽奖”按钮时,页面上的抽奖结果将会显示为十个随机抽出的姓名,例如:

张三,周十三,黄十一,袁二十六,刘九,梁二十九,史三十,李四,田七,马十八

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery输入数字随机抽奖特效的简单实现代码 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 你所不知道的 CSS 动画技巧与细节

    你所不知道的 CSS 动画技巧与细节 1. 利用 transform 属性创建更流畅的动画效果 在 CSS 动画中,transform 属性可以帮助我们创建平移、旋转和缩放效果。不过在使用时,我们还可以借助它的一些细节来让动画更加流畅。 使用 transform: translateZ(0) 增加硬件加速 在移动设备上,我们经常会遇到动画卡顿的问题。这时可以…

    css 2023年6月10日
    00
  • JavaScript限定范围拖拽及自定义滚动条应用(3)

    “JavaScript限定范围拖拽及自定义滚动条应用(3)”是一篇关于使用JavaScript实现定制化拖拽和滚动条功能的文章。该文章的主要内容包括以下几个部分: 一、示例背景及需求 文章先简单介绍了一个实际应用场景:一个网页包含多个列表,每个列表内有多个卡片,需要实现拖拽排序和自定义滚动条的功能。 二、代码实现步骤 实现拖拽排序功能 给每个卡片绑定mous…

    css 2023年6月10日
    00
  • 微信小程序实现登录页云层漂浮的动画效果

    让我们来详细讲解“微信小程序实现登录页云层漂浮的动画效果”的完整攻略。 1. 实现思路 实现登录页云层漂浮的动画效果需要用到微信小程序的动画API和canvasAPI。 具体实现思路如下: 在登录页的wxml文件中定义一个canvas元素,用于显示背景云层。 使用微信小程序的canvasAPI,绘制若干张透明的云朵图片。 通过定时器,控制每张云朵图片的位置和…

    css 2023年6月10日
    00
  • CSS中层叠上下文的具体使用

    CSS层叠上下文是指元素的一种视觉概念,它定义了元素如何在彼此之间层叠显示。如果两个元素发生了层叠,则它们具有重叠部分,以及它们的相对层叠顺序。层叠上下文本身也可以重叠,这取决于它们的z-index值。下面是关于如何使用层叠上下文的完整攻略: 创建一个层叠上下文 除了定位和浮动的元素,html中的所有元素都可以成为层叠上下文。可以为任何元素设置z-index…

    css 2023年6月11日
    00
  • DW在html中插入css样式方法

    以下是“DW在HTML中插入CSS样式方法”的完整攻略: DW在HTML中插入CSS样式方法 在 Dreamweaver 中,可以使用多种方法在 HTML 中插入 CSS 样式。以下是一些常见的实现方法。 方法一:使用内部样式表 使用内部样式表是一种常见的在 HTML 中插入 CSS 样式的方法。以下是一个示例: <!DOCTYPE html> …

    css 2023年5月18日
    00
  • 轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮

    下面是 “轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮”的完整攻略: 创建菜单 EasyUI提供了$menu()方法可以创建一个菜单组件。下面是一个示例: $(‘#menu’).menu({ onClick:function(item){ alert(item.name); } }); 在上面的代码中,选择器 “$(‘#menu’)” 用…

    css 2023年6月10日
    00
  • ReactJs设置css样式的方法

    ReactJs 中设置 CSS 样式有多种方法,下面将介绍几种常用的方法: 1. 内联样式 在 ReactJs 中,可以使用内联样式设置组件的样式。内联样式以对象形式定义,对象中的属性名必须为 camelCase 风格的字符串,而属性值则是字符串或者数字。 示例: import React from ‘react’; const MyComponent = …

    css 2023年6月9日
    00
  • python中selenium库的基本使用详解

    下面我会对“python中selenium库的基本使用详解”的完整攻略进行详细讲解,包括安装、基础知识、常见操作等方面内容。 安装Selenium库 在使用Selenium之前,我们需要先安装Selenium库。可以通过以下命令在命令行中安装: pip install selenium 注意:在安装Selenium库之前,需要确保已经安装好了Python。 …

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部