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

如何编写词典App页面点击单词即可播放对应发音MP3的通用JS脚本

修正后可直接运行的完整代码

<!DOCTYPE html>
<html>
<head>
    <title>单词发音功能示例</title>
</head>
<body>
    <!-- 实际使用时替换为你的p标签即可,只要元素id和单词、发音文件名对应即可 -->
    <p id="cat">cat</p>
    <p id="dog">dog</p>
    <button id="apple">apple(旁侧按钮示例)</button>

<script>
// 全局监听页面点击事件,无需单独给每个单词元素绑定事件
document.addEventListener('click', function(e) {
    const targetId = e.target.id.trim();
    // 仅点击带非空id的元素时触发发音,避免误触页面其他区域
    if (targetId) {
        playSound(targetId);
    }
});

// 通用发音播放函数
function playSound(word) {
    // 用原生HTML5 Audio API实现,兼容性更好,无需修改页面DOM结构
    const audio = new Audio(`${word}.mp3`);
    // 可选:音频加载失败时的兜底提示,方便排查文件缺失问题
    audio.addEventListener('error', () => {
        console.log(`未找到${word}对应的发音文件`);
    });
    audio.play();
}
</script>
</body>
</html>

关键修改说明

  • 修复了原代码中字符串拼接语法错误、占位符未替换的问题
  • 替换了老旧的embed标签方案,使用原生Audio API无需修改DOM结构,适配绝大多数现代浏览器
  • 增加了id非空判断,避免点击页面空白区域、无id元素时抛出异常
  • 自动适配全页面所有带对应id的元素,不管是p标签还是旁侧按钮都能触发

如果你坚持要使用插入embed标签的原有方案,可以把上面的playSound函数替换为以下版本:

function playSound(word) {
    document.getElementById(word).innerHTML = `
        <embed src="${word}.mp3" hidden="true" autostart="true" loop="false" />
    `;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:54:04