当前号码…">
当前位置:首页 > JavaScript

js怎么实现叫号

2026-02-02 16:09:42JavaScript

实现叫号系统的JavaScript方法

叫号系统通常用于医院、银行等场所,以下是一个基于JavaScript的简单实现方案:

HTML部分

<div id="display">当前号码: <span id="currentNumber">0</span></div>
<button id="nextBtn">叫下一个号</button>
<button id="resetBtn">重置</button>

CSS部分

#display {
  font-size: 2em;
  margin: 20px;
}
button {
  padding: 10px 20px;
  margin: 5px;
  font-size: 1em;
}

JavaScript部分

let currentNumber = 0;

document.getElementById('nextBtn').addEventListener('click', function() {
  currentNumber++;
  document.getElementById('currentNumber').textContent = currentNumber;
  speakNumber(currentNumber);
});

document.getElementById('resetBtn').addEventListener('click', function() {
  currentNumber = 0;
  document.getElementById('currentNumber').textContent = currentNumber;
});

function speakNumber(number) {
  if ('speechSynthesis' in window) {
    const utterance = new SpeechSynthesisUtterance(`请${number}号到窗口办理`);
    utterance.lang = 'zh-CN';
    window.speechSynthesis.speak(utterance);
  } else {
    alert(`请${number}号到窗口办理`);
  }
}

增强版叫号系统功能

对于更复杂的需求,可以考虑以下扩展功能:

添加叫号队列

let queue = [];
let currentNumber = 0;

function addToQueue() {
  queue.push(currentNumber + 1);
  currentNumber++;
  updateQueueDisplay();
}

function callNext() {
  if(queue.length > 0) {
    const nextNumber = queue.shift();
    document.getElementById('currentNumber').textContent = nextNumber;
    speakNumber(nextNumber);
    updateQueueDisplay();
  }
}

function updateQueueDisplay() {
  document.getElementById('queue').textContent = `等待人数: ${queue.length}`;
}

添加叫号音效

function playBeep() {
  const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
  const oscillator = audioCtx.createOscillator();
  const gainNode = audioCtx.createGain();

  oscillator.type = 'sine';
  oscillator.frequency.value = 800;
  gainNode.gain.value = 0.1;

  oscillator.connect(gainNode);
  gainNode.connect(audioCtx.destination);

  oscillator.start();
  gainNode.gain.exponentialRampToValueAtTime(0.00001, audioCtx.currentTime + 0.5);
  oscillator.stop(audioCtx.currentTime + 0.5);
}

服务器端集成方案

对于需要多终端同步的叫号系统,可以结合后端技术:

前端代码

async function callNextNumber() {
  try {
    const response = await fetch('/api/call-next', {
      method: 'POST'
    });
    const data = await response.json();
    updateDisplay(data.currentNumber);
  } catch (error) {
    console.error('叫号失败:', error);
  }
}

function updateDisplay(number) {
  document.getElementById('currentNumber').textContent = number;
  speakNumber(number);
}

后端接口示例(Node.js)

js怎么实现叫号

let currentNumber = 0;

app.post('/api/call-next', (req, res) => {
  currentNumber++;
  res.json({ currentNumber });
});

注意事项

  • 语音合成功能需要浏览器支持Web Speech API
  • 跨终端同步需要服务器支持
  • 实际部署时需要考虑网络延迟和并发问题
  • 可根据实际需求添加优先号、多窗口叫号等功能

标签: js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…

js实现点击隐藏

js实现点击隐藏

使用CSS类切换实现点击隐藏 通过添加或移除CSS类来控制元素的显示与隐藏。定义一个隐藏样式类如.hidden { display: none; },通过事件监听切换该类。 document.que…

vue.js实现拍照

vue.js实现拍照

Vue.js 实现拍照功能 在 Vue.js 中实现拍照功能通常需要结合浏览器的媒体 API(如 getUserMedia)和 Canvas 元素。以下是实现步骤: 准备工作 确保项目已安装 Vue…