在JavaScript中完成随机点名案例,要求如下: ①点击开始按钮随机抽取数组的一个数据,放到页面中 ②点击结束按钮删除数组当前抽取的一个数据 ③当抽取到最后一个数据的时候,两个按钮同时禁用(写点开始里面,只剩最后一个数据不用抽了 核心:和用定时器快速展示,停止定时器结束展示
时间: 2024-11-22 21:42:05 浏览: 20
在JavaScript中,你可以通过以下步骤来创建一个随机点名案例:
1. **初始化数据和DOM元素**:
- 创建一个包含学生名字的数组,例如`students = ['张三', '李四', '王五', ...];`
- 创建开始按钮(`startBtn`)和结束按钮(`endBtn`),以及一个用于显示被抽到的学生的容器(`nameDisplay`)。
2. **设置初始状态**:
- 初始化变量`currentIndex`用于记录当前抽到的学生位置,`isDrawing`标志是否正在抽奖,以及计数器`lastStudentCount`。
3. **绑定事件处理函数**:
- 给开始按钮绑定了`startDraw`函数,给结束按钮绑定了`stopDraw`函数。
4. **开始抽奖函数(startDraw)**:
- 检查是否开始抽奖:若未开始,设置`isDrawing`为`true`;
- 如果还有剩余学生,从数组中随机选取一个,更新`nameDisplay`并减少学生数组;
- 当只剩下最后一个学生时,禁用开始和结束按钮,并显示提示。
5. **结束抽奖函数(stopDraw)**:
- 检查是否还在抽奖:若已结束,返回;
- 更新`currentIndex`为-1,表示抽奖结束,禁用按钮;
- 移除最后一名学生的数据显示。
6. **清除定时器和启用/禁用按钮**:
- 在`startDraw`和`stopDraw`函数中,记得在适当的位置清除或设置定时器,并根据`lastStudentCount`和`currentIndex`调整按钮的状态。
以下是简化版的示例代码:
```javascript
let students = ['张三', '李四', '王五'];
let currentIndex = 0;
let isDrawing = false;
let lastStudentCount;
function startDraw() {
if (!isDrawing) {
isDrawing = true;
if (students.length > 1) {
const randomIndex = Math.floor(Math.random() * students.length);
displayStudent(students[randomIndex]);
students.splice(randomIndex, 1);
setTimeout(startDraw, 2000); // 每隔2秒抽奖一次
} else {
endDraw();
}
}
}
function displayStudent(student) {
nameDisplay.textContent = student;
}
function stopDraw() {
if (isDrawing) {
isDrawing = false;
currentIndex = -1;
if (students.length === 0) {
disableButtons();
alert('已经抽完所有学生');
}
}
}
function disableButtons() {
startBtn.disabled = true;
endBtn.disabled = true;
}
// DOM事件绑定
startBtn.addEventListener('click', startDraw);
endBtn.addEventListener('click', stopDraw);
// 初始化时可能需要手动调用startDraw一次
if (students.length > 1) {
startDraw();
}
```
阅读全文