работа setTimeout()

229
06 марта 2018, 05:52

Здравствуйте. Не получается самостоятельно разобраться с setTimeout. В чём проблема - необходимо переключать стили элемента по событию через паузу. Что я делаю внутри обработчика события - window.setTimeout(document.querySelector(".some-selector").classList.toggle('active'), 300); Всё работает, но без задержки. В чём проблема?

Answer 1

Все очень просто. Первым аргументом для setTimeout нужно передавать функцию, вторым - время задержки. Вы же передаете первым аргументом результат выполнения функций document.querySelector(".some-selector").classList.toggle('active')

Т.е. по сути передаете первым аргументом то, что вернет вам вызов .toggle('active'). А вернет он вам true или false, если верить справочке.

Чтобы сделать правильно, вам нужно обернуть код, который необходимо выполнить, в анонимную функцию. Вот так:

window.setTimeout(function() {
    document.querySelector(".some-selector").classList.toggle('active')
}, 300);

Теперь первый аргумент для setTimeout - ваша анонимная функция. Когда придет время, она будет вызвана, и необходимый код внутри этой функции будет выполнен.

READ ALSO
Отсортировать статьи по дате

Отсортировать статьи по дате

Есть такой код, нужно отсортировать статьи по дате при нажатии на кнопку Sort by date, но без jQuery, всяких плагинов и тд

291
Как добавить outerHTML в куки?

Как добавить outerHTML в куки?

Как добавить HTML код определенных элементов в куки?Точнее есть генератор который при нажатии генерирует div элемент с рандомным цветом и в рандомный...

259
Организация JS кода с Webpack

Организация JS кода с Webpack

Есть сайтик на phpВстал вопрос организациии js

258
jQuery: как избежать глобальных переменных в калькуляторе?

jQuery: как избежать глобальных переменных в калькуляторе?

Калькулятор состоит из нескольких чекбоксов, ползунков и селектовИ в принципе работает, но обновление результатов происходит только после...

218