You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现词典HTML音频按钮:首次正常播放,二次0.75倍速播放?

解决方案

你可以通过保存音频实例和播放状态来实现这个需求,修改后的代码如下:

<script>
// 全局保存音频实例和播放状态
let music = new Audio('new folder/abarticulation.mp3');
let isNormalSpeed = true; // 标记当前是否为正常速度

function abarticulation() {
  // 切换播放速度
  music.playbackRate = isNormalSpeed ? 1 : 0.75;
  // 重置音频到开头(如果需要每次点击都从头播放)
  music.currentTime = 0;
  // 播放音频
  music.play();
  // 切换状态,下次点击用相反速度
  isNormalSpeed = !isNormalSpeed;
}
</script>
<input type="button" value="🔊" onclick="abarticulation()" />

关键说明:

  • 将Audio实例和状态变量isNormalSpeed放在函数外部,避免每次点击重建音频对象,从而保留速度状态。
  • playbackRate属性控制音频播放速度,1为正常速度,0.75对应75%倍速。
  • music.currentTime = 0确保每次点击都从头播放,若希望从上次暂停位置继续播放,可删除该行。
  • 每次点击后切换isNormalSpeed的布尔值,实现下次点击自动切换速度的效果。

如果需要支持多个单词的独立播放按钮,可通过自定义属性区分每个音频的状态:

<script>
// 存储每个音频的独立状态
const audioStates = {};

function playAudio(audioPath) {
  // 首次点击时创建音频实例和状态
  if (!audioStates[audioPath]) {
    audioStates[audioPath] = {
      instance: new Audio(audioPath),
      isNormalSpeed: true
    };
  }
  
  const { instance, isNormalSpeed } = audioStates[audioPath];
  instance.playbackRate = isNormalSpeed ? 1 : 0.75;
  instance.currentTime = 0;
  instance.play();
  // 更新当前音频的速度状态
  audioStates[audioPath].isNormalSpeed = !isNormalSpeed;
}
</script>
<!-- 单词abarticulation的播放按钮 -->
<input type="button" value="🔊" onclick="playAudio('new folder/abarticulation.mp3')" />
<!-- 其他单词的播放按钮示例 -->
<input type="button" value="🔊" onclick="playAudio('new folder/another-word.mp3')" />

这样每个单词的播放按钮会独立记录自身的速度状态,互不干扰。

内容的提问来源于stack exchange,提问作者Mr T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:25:10