本次分享JavaScript主要知識點涉及到for循環、if選擇結構判斷語句、數組的定義、定時器、清除定時器、日期對象的使用。
執行后效果圖:

思路:
1.網頁結構搭建: HTML
2.網頁布局美化: CSS
3.隨機功能實現: JavaScript
分析后案例思路圖:

編碼工作:
Html代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>基於JavaScript的隨機點名工具</title> </head> <body> <h1>王者榮耀英雄隨機點名系統</h1> <span id="span"></span> <div class="box" id="box"></div> <input type="button" id="btn" value="點名"/> </body> </html>
Css代碼:
body{
background-color: pink;/*整個網頁的背景顏色*/
}
h1{
text-align: center;/*文本居中*/
}
.box{
width: 1000px; /*大盒子寬度10000像素*/
height: 240px; /*大盒子高度240像素*/
margin: 0 auto; /*外邊距:上下的外間距為0 水平(左右)間距 自動居中*/
margin-top: 100px;/* 距離上方的外間距空出100像素*/
clear: both; /*清除浮動*/
}
#btn{
width: 100px; /*按鈕的寬度為100像素*/
height: 30px; /*按鈕的高度為100像素*/
margin-left: 600px;/*按鈕距離左側外邊距為600像素*/
margin-top: 50px; /*按鈕距離上方外邊距為50像素*/
}
.name{ /*name是子節點在js代碼單獨設置的類選擇器*/
width: 100px; /*設置子節點盒子的寬度是100像素*/
height: 30px; /*設置子節點盒子的高度是30像素*/
float: left; /*設置子節點盒子的浮動為向左浮動*/
background-color: antiquewhite;/*設置子節點盒子的背景顏色為“古董白”色*/
margin-left: 10px;/*設置子節點盒子距離左側外邊距為10像素*/
margin-top: 10px; /*設置子節點盒子距離上側外邊距為10像素*/
text-align: center;/*設置子節點盒子中的文本字體為居中顯示*/
line-height: 30px;/*設置子節點盒子中的文本高度為30像素*/
}
#span{ /*日期在單獨的一行中顯示,所以采用行內元素span*/
float: right; /*向左浮動*/
position: relative;/*設置位置為:相對定位。*/
top: 55px; /*上方空出55顯示*/
right: 185px; /*右側空出185像素*/
}
JavaScript代碼:
//1.創造虛擬后台數據
var arrs = ["魯班七號","諸葛亮","后裔","趙雲","女媧","小喬","不知火舞","大喬",
"韓信","亞瑟","孫尚香","孫悟空","孫臏","馬可波羅","廉頗","扁鵲","白起","安琪拉"
,"劉禪","張飛","妲己","甄姬","虞姬","項羽","庄周","黃忠","羋月","鍾馗"
,"劉邦","狄仁傑","王昭君","蔡文姬","花木蘭","蘭陵王","哪吒","姜子牙","武則天","關羽"
,"周瑜","曹操","李白","阿珂","呂布","嬴政","劉備"];
//2.獲取父節點元素
var boxNode = document.getElementById("box");
//2.1循環遍歷所有的數組中的元素,然后創建子節點元素
for (var i = 0; i < arrs.length; i++) {
//通過文檔對象 創建新元素“div”小盒子,使用divNode子節點進行接收
var divNode = document.createElement("div");
//使用子節點divNode向頁面中寫入數組中的每一個元素的名字
divNode.innerHTML=arrs[i];
//使用子節點divNode 調用 css中的類選擇器的name
divNode.className="name";
//使用父節點進行追加子節點
boxNode.appendChild(divNode);
}
//3.點名
// 使用文檔對象通過id獲取元素到btn
var btn= document.getElementById("btn");
// 當按鈕btn被單擊后觸發匿名函數
btn.onclick = function () {
// 如果 選擇的值全等於“點名”二字 則執行下方代碼
if(this.value==="點名"){
//設置定時器:每過100毫秒、執行一次下方的setTimes函數 並使用 timeId進行接收定時后的結果
timeId=setInterval("setTimes()",100);
this.value="停止";//本次按鈕的內容被賦值為停止
}else{//否則
//清除計時器
clearInterval(timeId);// 清除定時器(定時后的結果被清除)
this.value="點名";//本次按鈕的內容被賦值為點名
}
}
// 設置定時器內容函數
function setTimes () {
//遍歷數組中的使用元素
for (var j = 0; j < arrs.length; j++) {
//將父節點數組中的每一個元素的背景顏色清空
boxNode.children[j].style.background="";
}
// 獲取隨機選中的結果
//parseInt() 函數可解析一個字符串,並返回一個整數
//Math.random()是數學函數中的隨機某個數值(可整、可小數)
var random = parseInt(Math.random()*arrs.length);
//將父節點數組中的隨機被選中元素的背景顏色設置為紅/
boxNode.children[random].style.background="red";
}
//4.調用時間
//使用文檔對象通過id獲取元素到span
var spanNode = document.getElementById("span");
//調用獲取時間函數
getTime();
//設置定時器: 每過1秒執行一次 時間函數
setInterval(getTime , 1000);
// 定義 獲取時間 函數
function getTime() {
// 實例化對象: 創建日期對象
var day = new Date();
//通過對象獲取年月日時分秒
var year = day.getFullYear();
var month = day.getMonth()+1;
var dat = day.getDay();
var hours = day.getHours();
var minitues = day.getMinutes();
var second = day.getSeconds();
// 通過 span節點向頁面拼接寫入 年月日時分秒
spanNode.innerHTML =year+"-"+month+"-"+dat+" "+hours+":"+minitues+":"+second;
}
作者: 楊校
出處: https://www.cnblogs.com/xiaoxiao5016
分享是快樂的,也見證了個人成長歷程,文章大多都是工作經驗總結以及平時學習積累,基於自身認知不足之處在所難免,也請大家指正,共同進步。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出, 如有問題, 可郵件(397583050@qq.com)咨詢。
