首页 > 解决方案 > audio.play() 在现有函数中工作,但不是单独的函数

问题描述

单击按钮时,我正在尝试播放声音。这是我尝试使用的功能:

function sound(){

  var audio = new Audio("button.wav");
  audio.play();

}

然后我在文件的底部有这个:

document.getElementById("convert").onclick = function() { sound(); };

我知道代码可以工作,因为如果我将两行代码放在声音函数中,另一个函数对按钮单击执行计算,声音就会播放。为什么代码仅在添加到现有函数时才有效,而不是作为自己的?

标签: javascriptaudio

解决方案


我假设您指的是“它自己的”:

document.getElementById("convert").onclick = sound();

在这种情况下,您将返回的值分配给元素sound()onclick属性。如果您想sound在单击按钮时被调用,请删除括号:

document.getElementById("convert").onclick = sound;

演示:

function sound(){
  var audio = new Audio("https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3");
  audio.play();
}
document.getElementById("convert").onclick = sound;
<button id="convert">Play</button>


推荐阅读