Mam stronkę, na której jest button
. Pod niego podpięta jest funkcja, która wyświetla jakiś content (DIV). Całość działa na zasadzie toogle, czyli show/hide content. Do tego animacja i jest ok.
Chciałem teraz dodać funkcję, która ten content będzie chowała po jakimś czasie. Ktoś może zapomnąć "zwinąć" to, co oglądał. Więc pod ten button
podpiąłem kolejną funkcję:
function autoHide(content, delayTime) {
setTimeout( () => {
if (content.getAttribute('data-displayMode') === "active") {
// hide content
}
}, delayTime);
}
Całość wydaje się działać. Ale zauważyłem pewien problem, który - nie wiem czy słusznie - kojarzy mi się z nagraniem, które podrzucił mi @LukeJL w innym temacie:
Chodzi o to, że jak kliknę kilka razy na ten przycisk to tak jakby na "stosie" przeglądarki odkłada się kilka takich funkcji, które potrafią odpalić po zakończeniu odliczania. Czyli szybko kliknę 3 razy i po upłynięciu delayTime
3 razy ta funkcja jest wywoływana. Mam nadzieję, że to jest jasne.
Czy można temu jakoś zapobiec? A może moja implementacja jest to kitu?