Синтаксис анонимной и именованной функции jQuery

Этот код работает для затухания и зацикливания аудиоэлемента при нажатии кнопки:

$("#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"));

Почему? И как правильно вызвать эту именованную функцию?

РЕДАКТИРОВАТЬ: Поскольку передача параметра вызывает функцию, какова хорошая стратегия обхода для передачи параметра?


person Gregory Tippett    schedule 19.06.2017    source источник
comment
потому что... ты назвал это. Если бы он возвращал функцию, которая затем делала то, что нужно, то она работала бы так, как вы ожидали.   -  person Kevin B    schedule 20.06.2017
comment
поскольку вы вызываете его, вам нужно, чтобы назначение щелчка было $("#loop").click(loopAudio);. Я предлагаю вам поместить атрибут в элемент #loop, чтобы указать тон, вместо использования аргумента.   -  person Steve0    schedule 20.06.2017


Ответы (1)


Ты пытался:

$("#loop").click(function(){
  loopAudio("testTone");
});
person Sergio    schedule 19.06.2017
comment
Это сделало это. Благодарю вас! - person Gregory Tippett; 20.06.2017