当前位置: 首页 > news >正文

js如何实现随机数切换

前言

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

01

具体示例

https://coder.itclan.cn/fontend/js/14-click-num-suiji/

点击文末左下角阅读原文,即可查看

02

随机切换图片代码

<!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循环去实现的

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

03

实现随机数的切换

具体代码如下所示,当使用原生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实现都是一样的,同样用的是定时器,加上一个开关去实现的

点击左下角查看更多

3c4258e48fd7a24433f7508026766327.gif

相关文章:

  • 深圳什么公司做网站好/广告电话
  • 新网站排名优化怎么做/跨境电商seo是什么意思
  • 太仓做网站的公司/宿州百度seo排名软件
  • 网络小说网站建设/微博付费推广有用吗
  • wordpress如何添加封面/千牛怎么做免费推广引流
  • 红色为主的网站/店铺推广软文300字
  • Week 11
  • 《Linux Shell脚本攻略》学习笔记-第十二章
  • CODESYS开发教程8-定时、触发和计数
  • 26--Django-后端开发-drf之路由、认证与权限用法
  • 【云原生】k8s之HPA,命名空间资源限制
  • 【代码随想录】96.不同的二叉搜索树
  • 书单这么多,这份最硬核
  • 01【AutoSAR 】- Partial Networking
  • 嵌入式Linux从入门到精通之第一节:软件安装
  • 鉴源论坛 · 观辙丨基于机器学习的汽车CAN总线异常检测方法
  • 【状态设计优化DP】P4310 绝世好题
  • UOS服务器操作系统KVM虚拟机迁移