为什么在将addEventListener
添加到function playSound(e) {
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
const key = document.querySelector(`.key[data-key="${e.keyCode}"]`);
if (!audio) return; //stop the function from running
audio.currentTime = 0; // rewinds to the start
audio.play();
key.classList.add("playing");
}
window.addEventListener('keydown', playSound);
时我不得不传递参数?如何自动传递事件?
go get -v github.com/veandco/go-sdl2/sdl
代码按原样运行
答案 0 :(得分:1)
以这种方式思考:
function addEventListener(event, handler) {
const eventObject = new Event();
switch(event) {
case "keydown":
handler(eventObject);
}
}
这显然是一个简化版本,但是传入的函数是通过addEventListener
答案 1 :(得分:0)
首先定义了这个功能。在通常情况下,我们会将该函数称为某个位置。但在这种情况下,您希望在触发keydown事件时调用它。为此,您已将该函数作为回调传递给keydown事件。幕后发生了类似下面的事情。
function keydown(callback) {
var e = getEvent(); // here it will get you the event object.
callback(e); // here your function playSound is called.
}