js如何实现随机数的切换

前言

在一些电商网站,或一些活动页上,看到一些特效,比如:抽奖时,点击图片,实现图片的随机切换,数字的随机切换等,为了吸引用户的注意力,增加网页的互动性,这个效果是怎么实现的呢

具体示例

9f5b48896a683e7d007202e75a38555e.gif
随机数

01

随机切换图片代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>点击图片随机切换</title>
    <style>
        * {
       padding:0;
          margin:0
        }
        #wrap{
            width:420px;
            height:531px;
            margin:auto;
            border:1px solid #000;
            text-align: center;
            cursor: pointer
        }
    </style>
</head>

<body>
    <div id="wrap">
        <img src="images/1.jpg" alt="" width="100%" height="100%">
    </div>

    <script>
         var index = 0;
         var oWrap = document.getElementById('wrap');
         var timer = null;   // 定义一个定时器
         var onOff = true;   // 开关按钮
         play();
            function play(){
              timer = setInterval(function(){
                    index++;
                    if(index>10){
                       index = 1;
                    }
                    document.querySelector("img").src="images/"+index+".jpg"
              },100);
            }
            // 事件操作
            oWrap.onclick = function(){
             if(onOff){
                   clearInterval(timer); // 清除定时器
             }else{
                   play();
             }
             onOff = !onOff;
            }
    </script>
</body>
</html>

随机切换图片,其实就是在切换图片img的src,当然也可以把图片放到一个数组当中存储的,上面我是把一些图片放到一个images文件夹里面

通过相对路径的方式去实现的,上面定时器内的代码也可以使用for循环去实现的

实现这个效果,需要借助一个定时器,点击图片显示和暂停时,需要借助一个开关按钮即可实现

02

实现随机数切换

具体代码如下所示,当使用原生js方法能实现后,在用vue或等其他一些框架,在里面实现相同的效果,核心代码实现依旧是没有变的

<template>
    <div id="wrap">
          <p class="text" :style="{color}">{{num}}</p>
          <p>
            <el-button :type="onOff == true?'primary':'danger'" @click="handleBtnCLick">{{onOff ==true?'暂停':'开始'}}</el-button>
        </p>
    </div>
</template>

<script>
    export default {
        name:"clickimgSuiji",
        data() {
            return {
                num: 0,
                numbers: [],
                timer: null,
                onOff: true, // 开关
                color: "red"

            }
        },
        mounted() {
            this.addNum();
            this.randomNum();
        },

        methods: {
          addNum() {
             for(let i = 1;i<=100;i++) {
                this.numbers.push(i)
             }
           },

           randomNum() {
              this.timer = setInterval(() => {
                // 定义一个random()函数,原理是 随机数和最大值减最小值的差相乘 最后再加上最小值
                // Math.floor(Math.random() * (max - min)) + min
                this.num = Math.floor(Math.random() * (this.numbers.length - 1)) + 1
              },100)
           },

           handleBtnCLick() {
              if(this.onOff) {
                this.color="#000";
                clearInterval(this.timer); // 清除定时器
              }else {
                this.color="red";
                this.randomNum();
              }
              this.onOff = !this.onOff;
           }
         
        }
    }
</script>

<style lang="scss" scoped>

#wrap{
 text-align: center;
}

.text {
    font-size: 20px;
    font-weight: bold;
}
</style>

重要知识点

面实现随机数的生成,在一定的数值范围内生成随机数

定义一个random()函数,原理是随机数和最大值减最小值的差相乘,最后再加上最小值

其中Math.floor()浮点数向下取整

Math.floor(Math.random() * (max - min)) + min

其他的,都是与原生js实现都是一样的,同样用的是定时器,加上一个开关去实现的

网站服务器配置-应该选择多大带宽-同时能承载多少用户的访问

2022-11-01

e4a83871056cd0cba93f438641a07172.jpeg

js如何实现阅读完协议后才可以注册

2022-10-31

703317da771f0ab2d3d058f01716eef3.jpeg

js如何删除一个元素

2022-10-30

5ff8d1526de0069b4c938502a3108148.jpeg

js如何动态创建网页新元素

2022-10-17

8a8a0f1ccc8d20cd7d207725292f97f0.jpeg

如何添加百度云加速-给网站增加防护

2022-10-08

70389e5bfa9a6405e4e0560a28429529.jpeg

86bbee2eb827358a4e9c1cc5fe050480.png

点击左下方,即可查看原文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值