随机点名DEMO

步骤

  1. 只需要将人员名单使用工具处理成下面的字符串并放在<script>标签内第一行即可(见:数据准备)
  2. 需要导入jQuery
  3. 点击导入人员信息即可看到对应的信息
  4. 正常使用(下面有具体实现)

数据准备

//人员名单
let names = "王峻熙,张嘉懿,李煜城,赵懿轩,王烨华,杨煜祺,阎智宸,孙正豪,吴昊然,郭志泽,李明杰,杨弘文,靳烨伟,马苑博,张鹏涛,叶红艳,张天荣,孙志梅,刘雪恩,孙荣";

具体代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #add{
            float: right;
            margin-right: 50px;
        }
        div{
            height: 500px;
            margin: 50px;
        }
        table{
            width: 70%;
            height: 90%;
            margin: auto;
            text-align: center;
        }
        tr{
            border:red 1px solid;
        }
        td{
            border: red 1px solid;
            text-align: center;
            font-size: large;
        }
        span{
            float: left;
        }
        .stopCss{
            margin-left: 20px;
        }
    </style>
</head>
<body bgcolor="#dbdbdc">
    <center><h1>随机点名系统</h1></center>
    <span><button id="add">导入人员信息</button></span>
    <span><button id="start">点名</button></span>
    <span><button id="stop" style="margin-left: 20px;">停止</button></span>
    <!--<span><button id="add">导入人员信息</button></span>-->

    <div id="div">
        <!--存放人员信息div-->
    </div>
    
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
//使用数据准备的人员名单
let names = "王峻熙,张嘉懿,李煜城,赵懿轩,王烨华,杨煜祺,阎智宸,孙正豪,吴昊然,郭志泽,李明杰,杨弘文,靳烨伟,马苑博,张鹏涛,叶红艳,张天荣,孙志梅,刘雪恩,孙荣";
//转成数组
let nameArr = names.split(",");

//定义一个变量,相当于处理好的人员名单的索引
var nameIndex = 0;

//根据人数创建表格,行,单元格,并添加人员信息到单元格
let addperson = document.getElementById("add").onclick = function(){
    
    //点击开始添加人员信息时,禁用该按钮
    document.getElementById("add").setAttribute("disabled",true);

    //创建tb
    var tb = document.createElement("table");
    tb.setAttribute("cellPadding","0");
    tb.setAttribute("cellSpacing","0");

    //将tb添加到div中
    var div = document.getElementById("div");
    div.appendChild(tb);

    //实际人数
    var nums = nameArr.length

    //创建tr,固定一行8个td,
    //需要创建的行数
    var createTR = Math.ceil(nums / 8);
    for(let i = 0; i < createTR;i++){
        //创建行
        var tr = document.createElement("tr");
        //将tr添加到tb
        tb.appendChild(tr);
    }

    //获取到所有的tr
    let doneTr = document.getElementsByTagName("tr");
	//在doneTr的遍历中添加td和对应的人员信息
    for(let index = 0;index < doneTr.length;index++){
         //如果是最后一行的话,创建的单元格个数需要判断
         if(index == doneTr.length - 1){
            //最后一列需要创建:nums -  ((createTR - 1) * 8) 个单元格
            var lastTR_TD = nums - ((createTR - 1) * 8);
            //循环创建最后一行的单元格
            for(let lastTD = 0;lastTD < lastTR_TD;lastTD++){
                //创建最后一行的td
                let td = document.createElement("td");
                //添加id属性,属性值为nameIndex
                td.setAttribute("id",nameIndex);
                //添加人员信息到td中
                td.innerHTML = nameArr[nameIndex];
                nameIndex++;
                //将创建的td添加到最后一行
                doneTr[index].appendChild(td);
            }
            
        }else{
            //非最后一行正常创建td并添加内容
            for(let createTD = 0;createTD < 8;createTD++){
                //创建td,固定一行8个td
                    let td = document.createElement("td");
                    td.setAttribute("id",nameIndex);
                    td.innerHTML = nameArr[nameIndex];
                    nameIndex++;
                    doneTr[index].appendChild(td);
            }
        }
    }
}


//定义一个定时器变量,用于随机单元格
var changeTd;

//在定义一个定时器变量,用于取消之前被定时器修改过的单元格颜色
var changeTdAfter;

//定义一个目标td变量
var targetTD;

//定义一个目标td的id属性值变量
var TdId;
//为start绑定单机事件,开始点名
let start = $("#start").click(function(){
		//点击开始按钮后,禁用开始按钮
        $("#start").prop("disabled",true);
    	//定时器每次随机选中一个td,为其添加背景色,间隔50ms
        changeTd = window.setInterval(function(){
       	 	//开始之前清除之前颜色
        	$("td").css("background-color","");
            //定义一个随机数,用于获取到名字所属单元格(随机选中单元格)
            let randomNum = Math.floor((Math.random() * nameArr.length) + 1 );
            //使用定义的目标td变量
            TdId = "#" + randomNum;
            //根据随机获取的数拼接上 # 进行查找指定td
            targetTD = $(TdId);
            //设置td的bgcolor
            targetTD.css("background-color","blue");
        },50);
            //清除td背景颜色
            changeTdAfter = window.setInterval(function(){
            targetTD.css("background-color","#dbdbdc");      
    },49);
});

//为stop绑定单击事件,停止点名
let stop = $("#stop").click(function(){
//点击停止按钮后,取消开始按钮的禁用
    $("#start").prop("disabled",false);
    //取消定时器(停止点名)
    window.clearInterval(changeTd);
    window.clearInterval(changeTdAfter);

    //重新设置随机选中td的bgcolor
    let clearTargetTD = $(TdId).css("background-color","red");;
});
</script>
</html>

有待提升
1.表格边框细节没有处理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值