如何实现词典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
相关产品推荐
相关产品推荐

