Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας παιδιά,

έχω τον παρακάτω 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. 

Δημοσ.

Τελικά το έκανα ως εξής: 

if (wrongClickTimestamps.length === 5){
  $("#delay_message_wrapper").show();
  setTimeout(function(){
    $("#delay_message_wrapper").hide();
  }, 3000);
}

Νόμιζα πως λόγω του signle thread της js δεν γινόταν να χρησιμοποιήσω setInterval και setTimeout μαζί. 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...