есть такая ситуция:
function doSmth(arg1, arg2, callback) {
// тут какие то действия
if (callback) setTimeout(callback, 7000);
}
elem.onclick = function () {
doSmth(arg1, arg2, function() {
anotherElem.style.display = "none";
});
};
elem2.onclick = function () {
doSmth(arg1, arg2, function() {
elemElem.style.display = "none";
});
};
если кликнуть первый элемент, то через 7 секунд другой элемент должен исчезнуть, а если кликнуть второй элемент, то опять же тот самый другой элемент должен исчезнуть через 7 секунд, но если второй элемент был нажат до того как таймер первого вызова сработал, то второй таймер игнорируется (ну или мне так кажется), так как другой элемент исчезает через 7 секунд после клика первого, а надо чтобы исчез через 7 секунд после клика по второму, как бы клик по второму элементу увеличивает жизнь ещё на 7 секунд
если опять нажать первый либо второй, то ещё на 7 секунд, и т д, пока ничего не кликнется и другой элемент исчезнет
я сделал так, через id, но пришлось использовать глобальную переменную:
function doSmth(arg1, arg2, callback) {
if (window.timer) clearTimer(timer);
// тут какие то действия
if (callback) timer = setTimeout(callback, 7000);
}
можно ли этот же результат как-то получить бнз использования глобальной переменной?