我试图用JQuery和JavaScript为按钮动画添加超时。起初我尝试了这个代码:
setTimeout(playBtnSoundAndAnimate(currentSequence[last]), 2000);
这并没有增加任何超时。然而,当我在下面写代码时,超时有效:
setTimeout(function () {
playBtnSoundAndAnimate(currentSequence[last]), 2000;});
为什么我需要通过";playBtnSoundAnAnimate";在匿名函数中,setTimeout是否生效?
如果重要的话;播放BtnSoundAndAnimate";功能看起来像:
function playBtnSoundAndAnimate(activatedBtn) {
$("#" + activatedBtn).addClass("pressed");
setTimeout(function () {
$(".btn").removeClass("pressed");
}, 50);
switch (activatedBtn) {
case "green":
const greenAudio = new Audio("sounds/green.mp3");
greenAudio.play();
break;
case "red":
const redAudio = new Audio("sounds/red.mp3");
redAudio.play();
break;
case "yellow":
const yellowAudio = new Audio("sounds/yellow.mp3");
yellowAudio.play();
break;
case "blue":
const blueAudio = new Audio("sounds/blue.mp3");
blueAudio.play();
break;
default:
break;
}}
查看文档,函数setTimeout
接受代码或回调函数作为第一个参数。它的工作原理是,当计时器到期时,回调函数的代码会被放在回调队列中。