当前号码…">
当前位置:首页 > 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部分

js怎么实现叫号

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}`;
}

添加叫号音效

js怎么实现叫号

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)

let currentNumber = 0;

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

注意事项

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

标签: js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…