随机选择

860 阅读1分钟
  1. 目录结构

    - random

        - image

            图片.jpeg

        index.html

  1. 代码
<!DOCTYPE html>
<html lang="en"><head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .random_main {
            width: 100%;
            box-sizing: border-box;
            padding: 15px;
        }
​
        .random_main .but_box {
            width: 100%;
            display: flex;
            flex-direction: row;
            justify-content: center;
            align-items: center;
        }
​
        #start {
            margin-right: 15px;
        }
​
        .random_name ul {
            display: flex;
            flex-direction: row;
            justify-content: center;
            flex-wrap: wrap;
            align-items: center;
        }
​
        .random_name ul li {
            list-style: none;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            margin-right: 20px;
        }
​
        .random_name ul li img {
            width: 100px;
            height: 100px;
            border-radius: 100px;
            opacity: .5;
        }
​
        #big_img img {
            width: 120px;
            height: 120px;
            border-radius: 120px;
            opacity: 1;
        }
    </style>
</head><body>
    <div class="random_main">
        <div class="but_box">
            <button id="start">开始</button>
        </div>
        <div class="random_name">
            <ul></ul>
        </div>
    </div>
    <script>
        // 获取开始/结束按钮
        let start = document.getElementById('start');
        // 获取ul
        let oUl = document.querySelector('.random_name ul');
        // 图片名称的集合
        let nameArr = ['小狗', '小马', '小猪', '小羊', '小牛', '小鸡', '小鸭', '王虎'];
        // 遍历图片名称,根据图片的个数创建li标签
        for (let i = 0; i < nameArr.length; i++) {
            // 创建li标签
            let oLi = document.createElement('li');
            // 创建img标签
            let oImg = document.createElement('img');
            // 给img标签的src属性增加图片路径,图片格式统一jpeg
            oImg.src = `./image/${nameArr[i]}${'.jpeg'}`;
            // 创建span标签,展示图片名称
            let oName = document.createElement('span');
            // 给每个span标签添加相对应的名称
            oName.innerText = nameArr[i];
            // 将img标签插入的li标签内
            oLi.appendChild(oImg);
            // 将span标签插入到li标签内
            oLi.appendChild(oName);
            // 将li标签添加到ul标签内
            oUl.appendChild(oLi);
        };
        // 开始按钮默认文案为“开始”,点击后变成“结束”
        start.innerText = '开始';
        // 定义计时器
        let time;
        // 定义flag状态,用来判断是开始状态还是结束状态
        let flag = true;
        // 按钮添加点击事件
        start.onclick = function () {
            // 判断是flag是否为true,为true则进行选择
            if (flag) {
                // 计时器开始,每80毫秒调取执行一次
                time = setInterval(function () {
                    // 获取随机数,随机数范围是从0-名字的个数
                    oRandom = Math.floor(Math.random() * oUl.childNodes.length)
                    // 循环li标签,将li标签的id置空
                    for (let i = 0; i < oUl.childNodes.length; i++) {
                        oUl.childNodes[i].id = ''
                    }
                    // 把随机数作为下标寻找相应的li标签,并为其添加id
                    oUl.childNodes[oRandom].id = 'big_img'
                }, 80)
                // 将按钮文案改为“结束”
                start.innerText = '结束'
                // 将flag状态改为false
                flag = false
            } else {
                // 如果flag状态为false,清除计时器
                clearInterval(time)
                // 将flag状态改为true
                flag = true
                // 将按钮文案改为“开始”
                start.innerText = '开始'
            }
        };
    </script>
</body></html>