HTML+JavaScript实现一个简单抽奖功能
为什么会做这个东西呢,纯属好玩,闲的
其实是在上次班会的时候想到的,班会的时候叫人回答问题,没人回答
当时就想,我如果抽签抽到你了,你还是不回答吗??好吧,一切都是扯淡
先来看看页面效果吧:
点击抽取就可以抽签了,红色框会显示内容,(PS:红色框是没有的,仅仅做描述)
抽取到的效果图如下,字体会随机滚动,最后停止:
里面的抽取内容完全可以替换,,,,
下面贴上代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
*{margin: 0px;padding: 0px;}
li{list-style: none;}
body{
font-family: "楷体";
user-select:none;
background: url('1.jpg') no-repeat;
background-size: 100%;
/*background-color: red;*/
}
.section{
position: relative;
width:935px;
height: 460px;
background-color: rgba(0,0,0,.3);
margin:165px auto 0;
text-align: center;
}
.section h2{
height: 90px;
line-height: 90px;
font-size: 40px;
color:#fff;
}
.section .s-result{
height: 400px;
color: #fff;
}
.s-result .number{
float: left;
width: 895px;
height: 300px;
line-height: 300px;
margin-left: 20px;
font-size: 60px;
font-weight: bold;
}
.btn{
position:absolute;
left: 50%;
margin-left: -161px;
bottom: -40px;
width: 323px;
height: 81px;
border-radius: 30px;
background-color: #000;
cursor:pointer;
}
.btn p{
line-height: 81px;
font-size: 50px;
color: #fff;
}
</style>
</head>
<body>
<div class="section">
<h2>看看谁最幸运!!</h2>
<div class="s-result">
</div>
<div class="btn">
<p>点 击 抽 取</p>
</div>
</div>
<script>
var oBtn = document.getElementsByClassName('btn')[0];
var oResult = document.getElementsByClassName('s-result')[0];
var arrName = ['张三','李四','王五','赵六','李xx','杨xx','张xx','A_dmin']; //抽签的内容
var step = 1;
var cnt = 1;
var flag = true;
oBtn.onclick = function (){
if(flag){
step = 1;
creatName();
flag = false;
}else{
var d = document.getElementsByClassName('number')[0];
oResult.removeChild(d);
step = 1;
creatName();
}
}
function getName(){
var num = Math.floor(Math.random()*(arrName.length-1));
var n = arrName[num];
arrName.splice(num,1);
return n;
}
function creatName(){
if(step > cnt){
return null;
}
step++; var oDiv = document.createElement('div');
oDiv.className = 'number'; oResult.appendChild(oDiv); var dis = 1;
var maxDis = 30;
var mySet = setInterval(function(){
dis++;
if(dis > maxDis){
oDiv.innerHTML = getName();
clearInterval(mySet);
creatName();
return null;
}
oDiv.innerHTML = arrName[Math.floor(Math.random()*(arrName.length-1))];
},50);
}
</script>
</body>
</html>
PS:
有点小瑕疵,可点击多次,每次随机的结果都是不一样的,所以当内容抽取完之后,页面会显示undefined,不过影响不大,啊哈哈哈哈
HTML+JavaScript实现一个简单抽奖功能的更多相关文章
- javascript编写一个简单的编译器(理解抽象语法树AST)
javascript编写一个简单的编译器(理解抽象语法树AST) 编译器 是一种接收一段代码,然后把它转成一些其他一种机制.我们现在来做一个在一张纸上画出一条线,那么我们画出一条线需要定义的条件如下: ...
- jquery实现简单抽奖功能
一直纠结要怎么用jquery实现抽奖功能,看别人很多都是用flash制作的,找了很多资料,最终找到一个比较适合需求的,我做了些许调整,以下是代码展示(复制下来可以直接使用). 先上图:
- 使用JavaScript实现一个简单的编译器
在前端开发中也会或多或少接触到一些与编译相关的内容,常见的有 将ES6.7代码编译成ES5的代码 将SCSS.LESS代码转换成浏览器支持的CSS代码 通过uglifyjs.uglifycss等工具压 ...
- 用JavaScript实现一个简单的树结构
数据源用数组混json结构,实现了基本的功能.效率一般,跟 dhtree 梅花雪树对比了下,都差不多. (ps感觉比dhtree快点,跟梅花雪树差不多,个人测试) 这个实现树的原理是根据json,不断 ...
- 使用javascript完成一个简单工厂设计模式。
在JS中创建对象会习惯的使用new关键字和类构造函数(也是可以用对象字面量). 工厂模式就是一种有助于消除两个类依赖性的模式. 工厂模式分为简单工厂模式和复杂工厂模式,这篇主要讲简单工厂模式. 简单工 ...
- 手摸手。完成一个H5 抽奖功能
要完成一个这样的抽奖功能 构思 奖励物品是通过接口获取的(img) 奖励结果是通过接口获取的(id) 抽奖的动画需要由慢到快再到慢 抽奖转动时间不能太短 抽奖结束需要回调 业务代码和功能代码要分离 先 ...
- 用JavaScript写一个简单的计算器
本文使用js实现了一个简单的加.减.乘.除计算器. 以下是css部分代码: *{ padding:0; margin:0; color: #424242; } .outer{ width:300px; ...
- JavaScript实现一个简单的密码输入功能
常见的密码输入框当输入字符后会被替换成‘*’,而且旁边会有个小眼睛可以查看原本的字符,虽然input标签有这个功能,但这只是自己正在看正则表达式的时候突然想到的,就当做个练习,自己手动实现下: < ...
- JavaScript 实现一个简单的MVVM前端框架(ES6语法)
前言 随着前端各大框架的崛起,为我们平时的开发带来了相当的便利,我们不能一直停留在应用层面,今天就自己动手实现一个乞丐版的MVVM小框架 完整代码github地址 效果 html代码 <div ...
随机推荐
- Docker笔记2:Docker 镜像仓库
Docker 镜像的官方仓库位于国外服务器上,在国内下载时比较慢,但是可以使用国内镜像市场的加速器(比如阿里云加速器)以提高拉取速度. Docker 官方的镜像市场,可以和 Gitlab 或 GitH ...
- 多测师讲解selenium_输入性弹框定位_高级讲师肖sir
#输入性弹框from selenium import webdriverfrom time import sleepdrvier=webdriver.Chrome()url='file:///F:\d ...
- 从源码角度来分析线程池-ThreadPoolExecutor实现原理
作为一名Java开发工程师,想必性能问题是不可避免的.通常,在遇到性能瓶颈时第一时间肯定会想到利用缓存来解决问题,然而缓存虽好用,但也并非万能,某些场景依然无法覆盖.比如:需要实时.多次调用第三方AP ...
- Spring系列 SpringMVC的请求与数据响应
Spring系列 SpringMVC的请求与数据响应 SpringMVC的数据响应 数据响应的方式 y以下案例均部署在Tomcat上,使用浏览器来访问一个简单的success.jsp页面来实现 Suc ...
- 发布MeteoInfo 1.2.5
提升了MeteoInfoLab脚本数据处理能力,比如双Y轴图.多Y轴图.数组计算.坐标投影计算等.这里给出几个示例图,以后有空了会将示例脚本程序整理放在网上.坐标投影计算: 双Y轴图: 多Y轴图: 多 ...
- 【树形结构】51nod 1766 树上的最远点对
题目内容 \(n\)个点被\(n−1\)条边连接成了一颗树,边有权值\(w_i\).有\(q\)个询问,给出\([a,b]\)和\([c,d]\)两个区间,表示点的标号请你求出两个区间内各选一点之间的 ...
- centos8平台使用mpstat监控cpu
一,mpstat的用途 mpstat是 Multiprocessor Statistics的缩写,是实时cpu监控工具. 在多CPU系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU ...
- textarea在编程中的实际应用
<textarea> 标签定义多行的文本输入控件. 文本区中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier) 实例 <textarea rows=&qu ...
- qemu-kvm安装and配置桥接和SR-IOV
kvm和docker的区别:kvm是全虚拟化,需要模拟各种硬件,docker是容器,共享宿主机的CPU,内存,swap等.本文安装的qemu-kvm属于kvm虚拟化,其中:kvm负责cpu虚拟化和内存 ...
- 在 Istio 中实现 Redis 集群的数据分片、读写分离和流量镜像
Redis 是一个高性能的 key-value 存储系统,被广泛用于微服务架构中.如果我们想要使用 Redis 集群模式提供的高级特性,则需要对客户端代码进行改动,这带来了应用升级和维护的一些困难.利 ...