Уменьшит время сетинтервала
Есть такой код нужно чтобы пока пользователь держит кнопку функция выполнялась, и чем дольше держит тем быстрее. У меня это не работает потому что событие mousedown по сути происходит 1 раз. И принимает первое значение переменный sec. Предлагали через промисы сделать я их еще не проходил. Есть какой то вариант усовершенствовать этот код?
let sec = 1000
decrease.addEventListener('mouseup', () => clearInterval(timeout));
decrease.addEventListener('mousedown', () => {
timeout = setInterval(() => {
decreaseFunc();
sec -= 100;
console.log(sec);
}, sec);
});
Ответы (2 шт):
Автор решения: Ринат
→ Ссылка
Можно завести переменную mousepress и проверять истинность в интервальной функции
let sec = 1000
let mousepress = false;
function intervalfunc(){
decreaseFunc();
console.log(sec);
}
function decreaseFunc() {
if (mousepress) {
sec -= 100;
clearInterval(timeout);
timeout = setInterval(intervalfunc, sec);
}
}
decrease.addEventListener('mouseup', () => { mousepress=false; clearInterval(timeout);} );
decrease.addEventListener('mousedown', () => { mousepress = true; timeout = setInterval(intervalfunc, sec); });
<button id="decrease"> click </button>
Автор решения: Rudi
→ Ссылка
Можно что-то такое сделать..
let sec = 1000;
document.addEventListener('mouseup', () => clearInterval(timeout));
document.addEventListener('mousedown', () => { d() });
function d() {
sec -= 50;
if (sec < 50) sec = 50;
timeout = setInterval(() => {
console.log(sec);
clearInterval(timeout);
d();
}, sec);
}