Этот код работает для затухания и зацикливания аудиоэлемента при нажатии кнопки:
$("#loop").click(function(){
var tone = document.getElementById("testTone");
tone.play();
$("#testTone").animate({volume: 0}, 1900);
setInterval(function(){
tone.currentTime = 0;
tone.volume = 1;
tone.play();
$("#testTone").animate({volume: 0}, 1900);
},2000)
});
Однако, когда я называю функцию, она вызывается сразу при загрузке страницы, не нажимая кнопку.
function loopAudio(target){
var tone = document.getElementById(target);
tone.play();
$("#"+target).animate({volume: 0}, 1900);
setInterval(function(){
tone.currentTime = 0;
tone.volume = 1;
tone.play();
$("#"+target).animate({volume: 0}, 1900);
},2000)
};
$("#loop").click(loopAudio("testTone"));
Почему? И как правильно вызвать эту именованную функцию?
РЕДАКТИРОВАТЬ: Поскольку передача параметра вызывает функцию, какова хорошая стратегия обхода для передачи параметра?
$("#loop").click(loopAudio);
. Я предлагаю вам поместить атрибут в элемент#loop
, чтобы указать тон, вместо использования аргумента. - person Steve0   schedule 20.06.2017