原生JS實現隨機點名項目

来源:https://www.cnblogs.com/duxiu-fang/archive/2019/04/30/10795526.html
-Advertisement-
Play Games

核心思想 隨機產生規定範圍內的整數,然後再產生相同範圍內的整數,兩者相同時,則暫停。 所用知識 Math.random() * num: 產生從0到num的隨機數 Math.floor(): 向下取整 簡單的DOM操作等 技術擴展 擴展人數 添加停止鍵等 效果 代碼如下 html: css: jav ...


核心思想

  • 隨機產生規定範圍內的整數,然後再產生相同範圍內的整數,兩者相同時,則暫停。

所用知識

  • Math.random() * num: 產生從0到num的隨機數
  • Math.floor(): 向下取整
  • 簡單的DOM操作等

技術擴展

  • 擴展人數
  • 添加停止鍵等

效果

 

代碼如下

  • html:

 

    <div class="container">
        <section class="demo">
            <ul>
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </section>
        <section class="students"><ul></ul></section>
        <section class="buttonList">
            <ul>
                <li><button type="button">隨機選一個</button></li>
                <li><button type="button">隨機選兩個</button></li>
                <li><button type="button">隨機選三個</button></li>
            </ul>
        </section>
    </div>
  • css:
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }
        ul {
            list-style: none;
        }
        body {
            width: 100%;
            height: 100%;
            background: url("images/bg.jpg") no-repeat;
            background-size: cover;
        }
        button {
            border: none;
            background-color: transparent;
            color: #fff;
            font-size: 20px;
        }
        .container {
            width: 1200px;
            height: 700px;
            margin: 10px auto;
        }
        .container .demo, .container .buttonList {
            width: inherit;
            height: 25%;
        }
        .container .students {
            width: inherit;
            height: 50%;
        }
        .container .students li {
            margin-right: 50px;
            margin-bottom: 30px;
            text-align: center;
            border-radius: 10px;
            font-size: 20px;
            font-weight: bold;
        }
        .container .students li:nth-child(5n) {
            margin-right: 0;
        }
        .container .buttonList li button {
            float: left;
            width: 200px;
            height: 60px;
            background-color: #4caf5085;
            margin-right: 150px;
            text-align: center;
            line-height: 60px;
            border-radius: 10px;
            margin-top: 50px;
            font-weight: bold;
        }
        .container .buttonList li button:hover {
            background-color: #4caf50;
        }
        .container .buttonList li:nth-child(1) {
            margin-left: 150px;
        }
        .container .demo li {
            width: 200px;
            height: 150px;
            background-color: #4caf5085;
            float: left;
            margin-right: 150px;
            border-radius: 50%;
            margin-top: 10px;
            line-height: 150px;
            font-weight: bold;
            color: #fff;
            font-size: 60px;
            text-align: center;
        }
        .container .demo li:first-child {
            margin-left: 150px;
        }
    </style>
  • javascript:
<script type="text/javascript">
        var stuArray = ["小方", "小田", "小明", "小紅", "小呂", "小於", "小美", "小綠", "李華", "小李", "小胡",
            "小夏", "小徐", "小小", "小吳", "小陳", "小狗", "小許", "小熊", "小新"];
        var stuList = document.querySelector(".students").querySelector("ul");
        var buttonList = document.querySelectorAll("button");
        var demoList = document.querySelector(".demo").querySelectorAll("li");
        

        for (var i = 0; i < stuArray.length; i++) {
            var li = document.createElement("li");
            stuList.appendChild(li);
            li.innerHTML = stuArray[i];
            li.style.cssFloat = "left";
            li.style.width = 200 + "px";
            li.style.height = 60 + "px";
            li.style.backgroundColor = "#4caf5085";
            li.style.color = "#fff";
            li.style.lineHeight = 60 + "px";
        }

        var stuArrayList = stuList.querySelectorAll("li");

        function chooseOne () {
            for (var i = 0; i < stuArrayList.length; i++) {
                stuArrayList[i].style.background = "#4caf5085";
            }
            for (var i = 0; i < demoList.length; i++) {
                demoList[i].innerHTML = "";
            }
            var interId = setInterval(function () {
                var x = Math.floor(Math.random() * stuArray.length);
                stuArrayList[x].style.backgroundColor = "green";
                demoList[1].innerHTML = stuArrayList[x].innerHTML;
                var timeId = setTimeout(function () {
                    stuArrayList[x].style.backgroundColor = "#4caf5085";
                }, 100);
                var y = Math.floor(Math.random() * stuArray.length);
                if (y == x) {
                    clearTimeout(timeId);
                    clearInterval(interId);
                    stuArrayList[y].style.backgroundColor = "green";
                }
            }, 100);
        }

        function chooseTwo () {
            for (var i = 0; i < stuArrayList.length; i++) {
                stuArrayList[i].style.background = "#4caf5085";
            }
            for (var i = 0; i < demoList.length; i++) {
                demoList[i].innerHTML = "";
            }
            var interId = setInterval(function () {
                do {
                    var x1 = Math.floor(Math.random() * stuArray.length);
                    var x2 = Math.floor(Math.random() * stuArray.length);
                } while (x1 == x2);
                stuArrayList[x1].style.backgroundColor = "green";
                stuArrayList[x2].style.backgroundColor = "green";
                demoList[0].innerHTML = stuArrayList[x1].innerHTML;
                demoList[2].innerHTML = stuArrayList[x2].innerHTML;
                var timeId = setTimeout(function () {
                    stuArrayList[x1].style.backgroundColor = "#4caf5085";
                    stuArrayList[x2].style.backgroundColor = "#4caf5085";
                }, 100);
                var y1 = Math.floor(Math.random() * stuArray.length);
                var y2 = Math.floor(Math.random() * stuArray.length);
                if ((y1 == x1 && y2 == x2) || (y1 == x2 && y2 == x1)) {
                    clearTimeout(timeId);
                    clearInterval(interId);
                    stuArrayList[x1].style.backgroundColor = "green";
                    stuArrayList[x2].style.backgroundColor = "green";
                }
            }, 100);
        }

        function chooseThree () {
            for (var i = 0; i < stuArrayList.length; i++) {
                stuArrayList[i].style.background = "#4caf5085";
            }
            for (var i = 0; i < demoList.length; i++) {
                demoList[i].innerHTML = "";
            }
            var interId = setInterval(function () {
                do {
                    var x1 = Math.floor(Math.random() * stuArray.length);
                    var x2 = Math.floor(Math.random() * stuArray.length);
                    var x3 = Math.floor(Math.random() * stuArray.length);
                } while (x1 == x2 || x2 == x3 || x1 == x3);
                stuArrayList[x1].style.backgroundColor = "green";
                stuArrayList[x2].style.backgroundColor = "green";
                stuArrayList[x3].style.backgroundColor = "green";
                demoList[0].innerHTML = stuArrayList[x1].innerHTML;
                demoList[1].innerHTML = stuArrayList[x2].innerHTML;
                demoList[2].innerHTML = stuArrayList[x3].innerHTML;
                var timeId = setTimeout(function () {
                    stuArrayList[x1].style.backgroundColor = "#4caf5085";
                    stuArrayList[x2].style.backgroundColor = "#4caf5085";
                    stuArrayList[x3].style.backgroundColor = "#4caf5085";
                }, 100);
                var y1 = Math.floor(Math.random() * stuArray.length);
                var y2 = Math.floor(Math.random() * stuArray.length);
                var y3 = Math.floor(Math.random() * stuArray.length);
                if ((x1 == y1 && x2 == y2) || (x1 == y2 && x2 == y1)) {
                    clearTimeout(timeId);
                    clearInterval(interId);
                    stuArrayList[x1].style.backgroundColor = "green";
                    stuArrayList[x2].style.backgroundColor = "green";
                    stuArrayList[x3].style.backgroundColor = "green";
                }
            }, 100);
        }

        buttonList[0]

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...