Ok, więc mam funkcję w mojej aplikacji AJAX, która przykleja etykietkę z podpisem w rogu po pewnym czasie, aby pomóc użytkownikowi w zasygnalizowaniu tego, co robią. Istnieje również druga funkcja, która usuwa limit czasu, jeśli użytkownik kliknie gdzieś indziej, ponieważ ta etykieta nie będzie już istotna.Wyczyść tablicę setTimeout's
Zaczynam mieć problem z ustawianiem wielu podpowiedzi na timeoutach, ustawienie ich jest w porządku, ale nie mogę znaleźć skutecznego sposobu na ich anulowanie, jeśli użytkownik przejdzie dalej.
Obecnie mój kod wygląda następująco
var tuttimer = new Array();
function showtooltip(uniqueid, delay){
tuttimer[uniqueid] = setTimeout(function(){
//Create tooltip code here
},delay);
}
function clearTuttimer(){
if(typeof tuttimer != 'undefined'){
for (var i = 0; i < tuttimer.length; i++) {
clearTimeout(tuttimer[i]);
}
}
}
Więc tablica tuttimer
jest tworzony przy obciążeniu strony, a następnie, gdy użytkownik robi coś, co przypadku podpowiedź, aby wyświetlić funkcję showtooltip()
nazywa i jest podany unikalny id i czas opóźnienia.
Ale jeśli użytkownik przejdzie do czegoś innego, wywołuje funkcję clearTuttimer()
, która sprawdza, czy tablica istnieje, a następnie wykonuje pętle i czyści każdy indywidualny limit czasu.
Jednak to nie działa. Mam nadzieję, że ktoś wskaże mi właściwy kierunek. Wielkie dzięki.
Wielki to nawet czystsze niż moja odpowiedź. –