rafinos Δημοσ. 10 Νοεμβρίου 2021 Δημοσ. 10 Νοεμβρίου 2021 Γεια σας παιδιά, έχω τον παρακάτω timer που τρέχει την συνάρτηση countdown() η οποία κατά βάση απλά εμφανίζει πόσα δευτερόλεπτα περνάνε σε ένα div. var timer = setInterval(function(){ countdown() }, 1000); Έχω κάποια κουτάκια στα οποία ο χρήστης κάνει click απλά πρέπει να γίνουν με σωστή σειρά. Σε περίπτωση που ο χρήστης αρχίσει να κάνει γρήγορα λάθος clicks με σκοπό να πετύχει το σωστό θέλω εμφανίζω ένα άλλο div το οποίο θα παραμείνει ανοιχτό για 3 δευτερόλεπτα. Προσπαθώ να φτιάξω μια συνάρτηση που θα καλείται κάθε φορά που γίνεται λάθος click. function onWrongClick(){ var now = Date.now(); wrongClickTimestamps.push(now); white(wrongClickTimestamps[0] < now - 3000) { wrongClickTimestamps.shift(); } if (wrongClickTimestamps.length === 5){ } } Η παραπάνω συνάρτηση κάνει το εξής: Όταν γίνεται ένα λάθος click τότε γίνεται push το timestamp στον αντίστοιχο πίνακα. Αν έχουν περάσει 3 δευτερόλεπτα από την στιγμή που έγινε το πρώτο λάθος click τότε γίνεται shift ο πίνακας με σκοπό να ξεκινήσει η μέτρηση από την αρχή. Το πρόβλημά μου είναι ότι δεν ξέρω πως να εμφανίσω ένα div και να το κρατήσω στην οθόνη για συγκεκριμένο χρονικό διάστημα (π.χ. 3 δευτερόλεπτα) με βάση τον timer που ήδη τρέχει. Το να το εμφανίσω είναι οκ... το βάζω απλά μέσα στο if (wrongClickTimestamps.length === 5), αλλά πως θα του πω ότι μόλις περάσουν 3 δευτερόλεπτα κάνε hide το div.
rafinos Δημοσ. 11 Νοεμβρίου 2021 Μέλος Δημοσ. 11 Νοεμβρίου 2021 Τελικά το έκανα ως εξής: if (wrongClickTimestamps.length === 5){ $("#delay_message_wrapper").show(); setTimeout(function(){ $("#delay_message_wrapper").hide(); }, 3000); } Νόμιζα πως λόγω του signle thread της js δεν γινόταν να χρησιμοποιήσω setInterval και setTimeout μαζί.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα