为什么我必须按两次按钮才能播放音频?

Why do I have to press buttons twice to play audio?

我用一些按钮制作了一个简单的程序。当用户单击按钮时,他们应该听到相应的声音。

你第一次按下任何给定的按钮。必须按两次按钮才能听到声音。此后每次只按一次按钮即可。

我对 jquery 或 javascript 没有这方面的经验。大多数情况下,复制并粘贴我在网上找到的不同示例以获得我现在所拥有的。

<style>
    p.hideme {display: none;}
</style>

<input type="button" class="btn btn-info" id="3" value="Sound 3" onclick=" play_sound3()">

<p class="hideme">
    <audio controls id="linkAudio3">
        <source src="sounds/sound3.mp3" type="audio/mpeg">
        Your browser does not support the audio element.
    </audio>
 </p>

<script>
    function play_sound3()
    {
        document.getElementById("3").addEventListener("click", function () {
        document.getElementById("linkAudio3").play();
  });
} 
</script>

预期的行为是按下按钮时应播放声音。

实际发生的情况是,在第一次按下任何按钮时,必须按下按钮两次才能播放声音

之后,程序按预期运行。

您有两个事件处理程序;一个在你的按钮上:

<input type="button" class="btn btn-info" id="3" value="Sound 3" onclick=" play_sound3()">

按钮调用的函数中有一个:

document.getElementById("3").addEventListener("click", function ()

这不仅会在您每次单击按钮时重复添加多个事件处理程序,这也是您出现双击问题的原因。

我建议删除内联事件处理程序,只创建放置在文档末尾的单个事件处理程序,例如:

<script>
document.getElementById("3").addEventListener("click", function () {
    document.getElementById("linkAudio3").play();
} 
</script>

*此外,避免使用数字 ID...