rafinos Δημοσ. 10 Νοεμβρίου 2021 Share Δημοσ. 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 Μέλος Share Δημοσ. 11 Νοεμβρίου 2021 Τελικά το έκανα ως εξής: if (wrongClickTimestamps.length === 5){ $("#delay_message_wrapper").show(); setTimeout(function(){ $("#delay_message_wrapper").hide(); }, 3000); } Νόμιζα πως λόγω του signle thread της js δεν γινόταν να χρησιμοποιήσω setInterval και setTimeout μαζί. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα