Объявить, но не вызвать jquery [дубликат]

99
11 сентября 2021, 15:40
На этот вопрос уже дан ответ здесь:
Как куда-нибудь передать функцию // почему событие вызывается сразу же? (1 ответ)
Закрыт 1 год назад.

Может глупый вопрос, заранее извиняюсь. Столкнулся с тем, что при создании функции сразу же ее инициализирую.

 function firstType() {
    setInterval(function () {
        xMass.forEach(function (element) {
            element.removeClass('active');
            console.log('1')
        });
    }, 500);
    setInterval(function () {
        xMass.forEach(function (element) {
            element.addClass('active');
        })
    });
}

А мне надо, чтобы она вызывалась по нажатию:

  $('button.start-first').on('click', firstType());

И тут я понял, что ничего не понял, я объявляю функцию, но не вызываю ее. Почему при перезагрузке страницы, у меня сразу же включатся эта функция автоматом. Более того. Я не могу остановить ее

function stopLight () {
    window.clearTimeout(secondType);}
 $('button.stop').on('click', stopLight);

Подскажите, где я туплю. Заранее спасибо.

Полный *.js =

let one = $('div.one'),
    two = $('div.two'),
    three = $('div.three'),
    four = $('div.four'),
    five = $('div.five'),
    six = $('div.six'),
    seven = $('div.seven');
let xMass = [
    one,
    two,
    three,
    four,
    five,
    six,
    seven
];

function firstType() {
    setInterval(function () {
        xMass.forEach(function (element) {
            element.removeClass('active');
            console.log('1')
        });
    }, 500);
    setInterval(function () {
        xMass.forEach(function (element) {
            element.addClass('active');
        })
    });
}
function secondType () {
    setInterval(function () {
        massiveNumber = Math.floor(Math.random() * 7);
        xMass[massiveNumber].addClass('active');
        console.log('2')
    }, 100);
    setInterval(function () {
        massiveNumber = Math.floor(Math.random() * 7);
        xMass[massiveNumber].removeClass('active')
    }, 100);
}

    $('button.start-first').on('click', firstType());
    $('button.start-second').on('click', secondType());

function stopLight () {
    window.clearTimeout(secondType);
    window.clearTimeout(firstType);
}
    $('button.stop').on('click', stopLight);
Answer 1
$('button.start-first').on('click', firstType);

Посмотрите, что подается в clearInterval в качестве параметра:

https://www.w3schools.com/jsref/met_win_clearinterval.asp

Заодно посмотрите, какие параметры обязательны в вызове setInterval:

https://www.w3schools.com/jsref/met_win_setinterval.asp

READ ALSO
Как вытащить значение из запроса Axios? [дубликат]

Как вытащить значение из запроса Axios? [дубликат]

Всем приветЕсть такой код: (Обратить внимание на HTML класс 'symbolTicket"')

164
Не отображаются кнопки в яндексовском блоке «Поделиться»

Не отображаются кнопки в яндексовском блоке «Поделиться»

Я работаю в dreaweaverВставила скрипты и блок кнопок

226