当前位置:首页 > JavaScript

js实现点名

2026-04-04 02:28:53JavaScript

js实现点名

js实现点名

实现点名功能的JavaScript代码

以下是一个简单的点名功能实现,包含随机选择和显示被点中的人名:

// 定义名单数组
const nameList = ['张三', '李四', '王五', '赵六', '钱七'];

// 获取DOM元素
const nameDisplay = document.getElementById('name-display');
const startBtn = document.getElementById('start-btn');
const stopBtn = document.getElementById('stop-btn');

let timer;
let isRolling = false;

// 开始点名
startBtn.addEventListener('click', () => {
  if (isRolling) return;
  isRolling = true;

  timer = setInterval(() => {
    const randomIndex = Math.floor(Math.random() * nameList.length);
    nameDisplay.textContent = nameList[randomIndex];
  }, 100);
});

// 停止点名
stopBtn.addEventListener('click', () => {
  if (!isRolling) return;
  clearInterval(timer);
  isRolling = false;
});

HTML结构示例

<div class="name-picker">
  <h2 id="name-display">准备开始</h2>
  <button id="start-btn">开始点名</button>
  <button id="stop-btn">停止</button>
</div>

CSS样式建议

.name-picker {
  text-align: center;
  margin-top: 50px;
}

#name-display {
  font-size: 32px;
  margin-bottom: 20px;
}

button {
  padding: 10px 20px;
  margin: 0 10px;
  font-size: 16px;
  cursor: pointer;
}

功能扩展建议

  1. 添加音效:在开始和停止时播放提示音增强体验
  2. 名单管理:增加添加/删除名单的功能
  3. 历史记录:保存已被点过名的人员
  4. 动画效果:使用CSS动画让名字滚动更生动
  5. 排除已点:避免重复点到同一个人

完整实现示例

class NamePicker {
  constructor(names = []) {
    this.names = names;
    this.pickedNames = new Set();
    this.isRolling = false;
    this.timer = null;
  }

  start(callback) {
    if (this.isRolling) return;
    this.isRolling = true;

    this.timer = setInterval(() => {
      const availableNames = this.names.filter(name => !this.pickedNames.has(name));
      if (availableNames.length === 0) {
        this.stop();
        return;
      }

      const randomIndex = Math.floor(Math.random() * availableNames.length);
      callback(availableNames[randomIndex]);
    }, 100);
  }

  stop() {
    if (!this.isRolling) return;
    clearInterval(this.timer);
    this.isRolling = false;
  }

  addName(name) {
    this.names.push(name);
  }

  reset() {
    this.pickedNames.clear();
  }
}

这个实现提供了更结构化的代码,便于扩展和维护。使用时只需创建NamePicker实例并调用相应方法即可。

标签: js
分享给朋友:

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…