JavaScript小案例-点击抽奖

本文章讲解一个JavaScript的小案例,九宫格抽奖,点击按钮开始抽奖,点击结束按钮确定抽到的奖项。当然也可以用于日常班级点名等用途。

为了方便大家使用,把全部代码放在最后。

目录

效果如下

代码部分

dom结构

样式

 JavaScript代码

获取dom元素

随机数函数

背景颜色改变函数

点击事件

代码集合


效果如下

代码部分

dom结构

写的比较简单,就是一个大的div,里面套九个div,下面写两个按钮。大家可以根据具体需求扩充。

<h1>抽奖</h1>
    <div id="big">
        <div class="box">一等奖</div>
        <div class="box">二等奖</div>
        <div class="box">三等奖</div>
        <div class="box">参与奖</div>
        <div class="box">特等奖</div>
        <div class="box">参与奖</div>
        <div class="box">四等奖</div>
        <div class="box">谢谢惠顾</div>
        <div class="box">五等奖</div>
    </div>
<button id="kai">开始</button>
<button id="jie">结束</button>

样式

样式部分也很简单,简单的写了一下大小和边框。大家可以根据自己需求写样式。

 * {
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }

        #big {
            width: 300px;
            height: 300px;
            box-shadow: 0px 0px 1px 1px gray;
            display: flex;
            flex-wrap: wrap;
        }

        .box {
            width: 100px;
            height: 100px;
            border: 1px black solid;
        }

        h1 {
            color: red;
        }
        button{
            height: 30px;
            width: 60px;
        }

 JavaScript代码

获取dom元素

根据html代码中,id和类名获取元素。

getElementsByClassName("box")会获取类名为box的所有元素组成一个伪数组。而id因为其唯一性,只会获取一个。

var kai = document.getElementById("kai");
var jie = document.getElementById("jie");
var box = document.getElementsByClassName("box");

随机数函数

我们首先写一个随机数的函数,参数为最小值和最大值,此函数会随机生成一个最大值和最小值之间的随机数。

先做判断,如果最大值和最小值写的反了,就调换二者的位置。

然后借助Math.random(),Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值,Math.random() * (max - min + 1) + min这个公式可以获取min到max的一个随机值,然后使用Math.floor(),Math.floor()函数总是返回小于等于一个给定数字的最大整数,这样返回的随机数就是个整数。

代码:

function random1(min, max) {//随机数函数
  if (min >= max) {//如果最大值和最小值写反了,就倒换它们俩
    var a;
    a = max;
    max = min;
    min = a;
  }
  return Math.floor(Math.random() * (max - min + 1) + min);//根据最大值和最小值区间,生成一个此区间的随机数
}

背景颜色改变函数

box.length是格子的数量,格子div的类名为 box, 我们使用var box = document.getElementsByClassName("box");获取一个类名为“box”的div的伪数组,所以box.length为格子的数量。

我们使用两个for循环嵌套,将所有box的背景颜色置为null。

然后调用之前的随机数函数,在所有box背景颜色置为null的情况下,将box[随机数]的颜色置为红色。

代码:

function yanse() {
  // console.log(random1(0,8));

  for (var j = 0; j < box.length; j++) {
    for (var z = 0; z < box.length; z++) {
      box[z].style.cssText = "background-color:null";
    }
    var a = random1(0, 8);
    box[a].style.background = "red";
  }
}

点击事件

我们给开始按钮添加点击事件,点击后就生成一个间隔定时器,每200毫秒执行一次颜色变化函数。在点击开始后,将开始按钮更改为无法点击状态。每200毫秒9个div的背景颜色,就有一个随机变红。

点击结束按钮,就会清空定时器,开始按钮更改为可以点击状态,并且有一个div的背景颜色变成了红色,完成我们想要的效果。

代码:

kai.onclick = function () {
  var ding = setInterval(yanse, 200);//间隔定时器,每200毫秒执行一次颜色变化函数
  kai.disabled = "true"; //按钮无法点击
  jie.onclick = function () {//结束按钮点击事件
    clearInterval(ding);//清空定时器
    kai.disabled = ""; //按钮无法点击

  };
};

代码集合

JavaScript:

var kai = document.getElementById("kai");
var jie = document.getElementById("jie");
var box = document.getElementsByClassName("box");
// var str = [0, 1, 2, 3, 4, 5, 6, 7, 8];

kai.onclick = function () {
  var ding = setInterval(yanse, 200);
  kai.disabled = "true"; //按钮无法点击
  jie.onclick = function () {
    clearInterval(ding);
    kai.disabled = ""; //按钮无法点击

  };
};

function random1(min, max) {
  if (min >= max) {
    var a;
    a = max;
    max = min;
    min = a;
  }
  return Math.floor(Math.random() * (max - min + 1) + min);
}
function yanse() {
  // console.log(random1(0,8));
  // var i = 0;
  for (var j = 0; j < box.length; j++) {
    for (var z = 0; z < box.length; z++) {
      box[z].style.cssText = "background-color:null";
    }
    var a = random1(0, 8);
    box[a].style.background = "red";
  }
}

html:

<h1>抽奖</h1>
    <div id="big">
        <div class="box">一等奖</div>
        <div class="box">二等奖</div>
        <div class="box">三等奖</div>
        <div class="box">参与奖</div>
        <div class="box">特等奖</div>
        <div class="box">参与奖</div>
        <div class="box">四等奖</div>
        <div class="box">谢谢惠顾</div>
        <div class="box">五等奖</div>
    </div>
    <button id="kai">开始</button>
    <button id="jie">结束</button>

css样式:

        * {
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }

        #big {
            width: 300px;
            height: 300px;
            box-shadow: 0px 0px 1px 1px gray;
            display: flex;
            flex-wrap: wrap;
        }

        .box {
            width: 100px;
            height: 100px;
            border: 1px black solid;
        }

        h1 {
            color: red;
        }
        button{
            height: 30px;
            width: 60px;
        }

感谢阅读。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是一个使用 JavaScript 实现的简单的轮播图案例: ```html <!DOCTYPE html> <html> <head> <title>JavaScript 案例:轮播图</title> <style> #slideshow { position: relative; width: 600px; height: 400px; margin: 0 auto; overflow: hidden; } #slideshow img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: opacity 1s ease-in-out; } #slideshow img.active { opacity: 1; } #slideshow button { position: absolute; top: 50%; transform: translateY(-50%); background-color: #fff; border: none; padding: 10px; cursor: pointer; font-size: 24px; } #slideshow button.prev { left: 0; } #slideshow button.next { right: 0; } </style> <script> var images = ["image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg"]; var index = 0; var slideshow = document.getElementById("slideshow"); var prevButton = document.createElement("button"); var nextButton = document.createElement("button"); function init() { prevButton.innerHTML = "❮"; prevButton.classList.add("prev"); prevButton.addEventListener("click", prevSlide); nextButton.innerHTML = "❯"; nextButton.classList.add("next"); nextButton.addEventListener("click", nextSlide); slideshow.appendChild(prevButton); slideshow.appendChild(nextButton); showSlide(); setInterval(nextSlide, 5000); } function showSlide() { var img = document.createElement("img"); img.src = images[index]; img.classList.add("active"); slideshow.appendChild(img); } function hideSlide() { var activeImg = slideshow.querySelector(".active"); activeImg.classList.remove("active"); slideshow.removeChild(activeImg); } function prevSlide() { hideSlide(); index--; if (index < 0) { index = images.length - 1; } showSlide(); } function nextSlide() { hideSlide(); index++; if (index >= images.length) { index = 0; } showSlide(); } window.addEventListener("load", init); </script> </head> <body> <h1>轮播图</h1> <div id="slideshow"></div> </body> </html> ``` 在这个案例中,我们使用了 JavaScript 来实现一个基本的轮播图。在 HTML 中,我们定义了一个包含图片的 div 元素,并使用 CSS 来设置其样式。在 JavaScript 中,我们定义了一个 images 数组来存储图片的文件名,一个 index 变量来记录当前显示的图片的索引,以及 prevButton 和 nextButton 两个按钮元素来控制切换图片。在 init 函数中,我们初始化轮播图,并设置了自动切换的定时器。在 showSlide 函数中,我们创建一个 img 元素,并将其添加到轮播图中。在 hideSlide 函数中,我们移除当前显示的图片。在 prevSlide 函数和 nextSlide 函数中,我们分别实现了向前和向后切换图片的逻辑。最后,我们在 window 的 load 事件中调用 init 函数来初始化轮播图。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊啊啊啊啊威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值