如何使用原生Js實(shí)現(xiàn)隨機(jī)點(diǎn)名詳解
使用原生Js實(shí)現(xiàn)隨機(jī)點(diǎn)名
最近學(xué)了一點(diǎn)前端內(nèi)容,老師讓用js設(shè)計(jì)一個(gè)班里的隨機(jī)點(diǎn)名器。就嘗試寫了一個(gè),具體實(shí)現(xiàn)效果如圖:
實(shí)現(xiàn)代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>點(diǎn)名</title> <link href="../callTheRoll/bootstrap-3.3.7-dist/css/bootstrap.min.css" type="text/css" rel="stylesheet"> </head> <style> div { float: left; } button { background-color: moccasin; margin: 30px; height: 50px; width: 150px; border: rgb(245, 165, 165) 1px solid; font-size: 18px; } .wai { margin-left: 200px; width: 1300px; } .name { height: 40px; width: 100px; margin: 4px; padding: 10px; font-size: 18px; background-color: mistyrose; } </style> <!-- onload : 事件會(huì)在頁(yè)面或圖像加載完成后立即發(fā)生。 --> <body onload="A()"> <div class="wai" align="center"> <table> <button class="start" onclick="start()">開始</button> <button class="end" onclick="end()">結(jié)束</button> </table> <div id="names"></div> </div> <script type="text/javascript"> var nameArr = [ "空", "張家家", "許雪雪", "王橘橘", "陳韻", "馬本本", "張志志", "唐豪豪", "高洋洋", "朱陽(yáng)陽(yáng)", "王山山", "空", "尹方方", "王零零", "李遠(yuǎn)遠(yuǎn)", "吳杰", "李玉玉", "李雯雯", "步一一", "崔明明", "肖金金", "陳晴晴", "趙飛飛", "空", "李英英", "李洋陽(yáng)", "劉俊郡", "王泊", "廉云云", "王子俊", "康三三", "李浩浩", "張藝藝", "徐葉葉", "李宏宏", "雷康康", "張青青", "王樂樂", "空", "楊童童", "張君君", "孫明", "何龍龍", "鄭軒軒", "任平平", "孫超超", "空", "賀濤濤", "空", "空", "空", "空", "熊秀秀", "薄嘉嘉", "薛萬(wàn)萬(wàn)", "尹飛", "張杰", "胡萬(wàn)萬(wàn)", "空", "馬文文" ]; var index = 0; var k = 1; // 記錄不為空的座位 // 生成作為表 function A() { for (var i = 0; i < nameArr.length; i++) { if (nameArr[i].length > 1) { // 創(chuàng)建div標(biāo)簽(html元素) var div = document.createElement("div"); div.setAttribute("class", "name"); div.setAttribute("id", index++ + ""); var text = document.createTextNode(nameArr[i]); div.appendChild(text); // 添加元素 document.getElementById("names").appendChild(div); // 每排12人,所以每隔12,添加一個(gè)換行符 if ((i + 1) % 12 == 0) { var br = document.createElement("br"); document.getElementById("names").appendChild(br); } k++; // 添加一個(gè)學(xué)生,k自增1,記錄學(xué)生(不為空的座位)個(gè)數(shù) } else { var div = document.createElement("div"); div.setAttribute("class", "name"); // div.setAttribute("id", index++ + ""); // 如果當(dāng)前元素長(zhǎng)度小于等于1時(shí),則代表當(dāng)前座位為空,所以不給當(dāng)前div添加id屬性,方便后續(xù)隨機(jī)選人時(shí),避開空座位 var text = document.createTextNode(nameArr[i]); div.appendChild(text); // 添加元素 document.getElementById("names").appendChild(div); if ((i + 1) % 12 == 0) { var br = document.createElement("br"); document.getElementById("names").appendChild(br); } } } } // 定義一個(gè)id標(biāo)志 var index2 = -1; function restore() { // 還原顏色 if (index2 != -1) { document.getElementById(index2 + "").style.cssText = "background: mistyrose"; } // 生成隨機(jī)數(shù),用K生成隨機(jī)數(shù),此時(shí)K代表不為空的作為個(gè)數(shù) var num = Math.floor(Math.random() * k); document.getElementById(num + "").style.cssText = "background-color:red"; index2 = num; // 記錄當(dāng)前被選中的id,在下次執(zhí)行該函數(shù)時(shí),將顏色還原 } var time; // 用于接收計(jì)時(shí)器,方便關(guān)計(jì)時(shí)器時(shí)操作 var n = 1; // 定義狀態(tài)正在執(zhí)行 n=0 , 已經(jīng)結(jié)束 n=1 function start() { if (n == 1) { // DOM setInterval()方法 計(jì)時(shí)器 time = setInterval("restore()", 80); n = 0; } } function end() { if (n == 0) { clearInterval(time); alert("請(qǐng)" + document.getElementById(index2 + "").innerHTML + "同學(xué)回答問題"); n = 1; } } </script> </body> </html>
在這里對(duì)計(jì)時(shí)器做一下介紹:
setInterval(code,millisec),這兩個(gè)參數(shù)都是必須的; 第一個(gè)參數(shù)是要調(diào)用的函數(shù)或要執(zhí)行的代碼串。 第二個(gè)參數(shù)是毫秒值,表示的是隔多久執(zhí)行一次code(參數(shù)一)。 clearInterval(id_of_setinterval),參數(shù)是必須的; 這個(gè)參數(shù)表示setInterval返回的ID值,即在代碼中我設(shè)置的time
(本人是小白一個(gè),所以寫的有什么問題也請(qǐng)各位指出,可以讓我及時(shí)改正,謝謝)
總結(jié)
到此這篇關(guān)于如何使用原生Js實(shí)現(xiàn)隨機(jī)點(diǎn)名的文章就介紹到這了,更多相關(guān)原生Js實(shí)現(xiàn)隨機(jī)點(diǎn)名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- javascript實(shí)現(xiàn)的一個(gè)隨機(jī)點(diǎn)名功能
- 使用javascript做的一個(gè)隨機(jī)點(diǎn)名程序
- js實(shí)現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)(實(shí)例講解)
- JS實(shí)現(xiàn)課堂隨機(jī)點(diǎn)名和順序點(diǎn)名
- js實(shí)現(xiàn)隨機(jī)點(diǎn)名小功能
- JS+CSS實(shí)現(xiàn)隨機(jī)點(diǎn)名(實(shí)例代碼)
- JavaScript實(shí)現(xiàn)班級(jí)隨機(jī)點(diǎn)名小應(yīng)用需求的具體分析
- JavaScript實(shí)現(xiàn)隨機(jī)點(diǎn)名器實(shí)例詳解
- JavaScript實(shí)現(xiàn)隨機(jī)點(diǎn)名器
- js實(shí)現(xiàn)隨機(jī)點(diǎn)名程序
相關(guān)文章
html+javascript實(shí)現(xiàn)可拖動(dòng)可提交的彈出層對(duì)話框效果
本文為大家介紹下使用html+javascript實(shí)現(xiàn)可拖動(dòng)彈出層、對(duì)話框、可提交,具體代碼如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08javascript實(shí)現(xiàn)顏色漸變的方法
這篇文章介紹了javascript實(shí)現(xiàn)顏色漸變的方法,有需要的朋友可以參考一下2013-10-10es6?js?匹配兩個(gè)數(shù)組對(duì)象的方法
這篇文章主要介紹了es6?js?匹配兩個(gè)數(shù)組對(duì)象的方法,實(shí)例代碼介紹了判斷兩個(gè)數(shù)組用的value是否相等,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03JavaScript事件Event對(duì)象詳解(屬性、方法、自定義事件)
Event對(duì)象代表事件的狀態(tài),比如事件在其中發(fā)生的元素、鍵盤按鍵的狀態(tài)、鼠標(biāo)的位置、鼠標(biāo)按鈕的狀態(tài),這篇文章主要給大家介紹了關(guān)于JavaScript事件Event對(duì)象(屬性、方法、自定義事件)的相關(guān)資料,需要的朋友可以參考下2024-01-01JS 在數(shù)組指定位置插入/刪除數(shù)據(jù)的方法
下面小編就為大家?guī)?lái)一篇JS 在數(shù)組指定位置插入/刪除數(shù)據(jù)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-01-01基于JavaScript實(shí)現(xiàn)簡(jiǎn)單掃雷游戲
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)簡(jiǎn)單掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01基于OO的動(dòng)畫附加插件,可以實(shí)現(xiàn)彈跳、漸隱等動(dòng)畫效果 分享
基于OO的動(dòng)畫附加插件,可以實(shí)現(xiàn)彈跳、漸隱等動(dòng)畫效果 分享,需要的朋友可以參考一下2013-06-06在IE8上JS實(shí)現(xiàn)combobox支持拼音檢索功能
這篇文章主要介紹了在IE8上JS實(shí)現(xiàn)combobox支持拼音檢索功能的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05