2016-06-19 13 views
0

Wir bereiten einen "Spiel" -Button mit Klassenfunktion vor, auf den Sie so oft wie möglich klicken, um (zu diesem Zeitpunkt) eine zunehmende Zufallszahl zu generieren. Wir möchten jedoch, dass es nach einer festgelegten Zeit von 10 Sekunden nicht mehr funktioniert.Timer für Tastenklicks

Der Klick-Code unten ist für die Nummerngenerierung, aber nicht sicher, wie man den Timer zum Stoppen der Schaltfläche erstellt und zu Testzwecken eine Warnung anzeigt.

$('.click-button').click(function() { 
    $('.score').html(function(i, val) { 
     return val - Math.floor(Math.random() * -11); 
    }); 
}); 
+0

gesetzt einer Variablen, die um eins erhöht erlauben jedem zweiten mittels setInterval, und nur der Klick zu arbeiten, wenn diese Variable unter 10? – JordanHendrix

Antwort

2

Ich gebe zu, dass dies ein bisschen ein Hack ist und könnte eine bessere Leistung haben, aber für dieses Beispiel wird es funktionieren.

Erstellen Sie ein Times-Array, in dem die Uhrzeit gespeichert wird, zu der ein Klickereignis aufgezeichnet wurde. Die Methode getTime() gibt die Anzahl der Millisekunden seit der Epoche von 1970 zurück. Um die Anzahl der Sekunden zu erhalten, multiplizieren wir das einfach mit 1000.

Mit jedem Klick überprüfen wir, ob seit dem ersten Klick 10 Sekunden vergangen sind.

Schauen Sie sich das Snippet

var clickTimes = [];       // Store click times here 
 

 
/* Get number of ms since the epoch with getTime and add to array. On every click check whether the time has elapsed */ 
 

 
$('.click-button').click(function() { 
 
    
 
    clickTimes.push(new Date().getTime()); 
 
    
 
    if (new Date().getTime() - clickTimes[0] < 10000) { 
 
     $('.score').html(function(i, val) { 
 
      return val - Math.floor(Math.random() * -11); 
 
     }); 
 
    } 
 
    else { 
 
     $(".score").html("Time's up! Click again to try again!"); 
 
     
 
     clickTimes.length = 0;    // Clear array 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="click-button">Generate Random Numbers</button> 
 

 
<p class="score"></p>

+0

Ja, das hat gut funktioniert! Wir können es von hier aus für zusätzliche Rückgabeelemente formatieren. Vielen Dank!! – pairof9s

0

Wie wäre es wir eine Variable, die um eins erhöht jeder zweiten setInterval verwenden und erlauben nur den Klick zu funktionieren, wenn diese Variable unter 10:

In diesem Beispiel erhalten Sie nach 10 Sekunden eine andere Warnung.

var time = 0; 
 

 
function start() { 
 
    setInterval(function() { 
 
    var curr = $('#container').text(); 
 
    time++; 
 
    $('#container').text(time); 
 
    }, 1000); 
 
} 
 

 
$('#btn').on('click', function(e) { 
 
    if ($('#container').text() < 11) { 
 
    console.log('K cool, enough time left'); 
 
    } else { 
 
    alert('TOO Late'); 
 
    } 
 
}) 
 

 
start()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="container"> 
 
    0 
 
</div> 
 
<button id='btn'>Click me Before 10 seconds</button>

+0

Ich dachte auch darüber nach, aber er erwähnte, dass er so oft wie möglich klicken wollte. Einige Tasten Stampfer möchten vielleicht mehrere Male pro Sekunde klicken –

+0

total, ja - Ich dachte, ich würde ein Beispiel mit Alert zeigen, aber wenn er es zerquetschen will, kann es geändert werden, um das Ereignis, zum Beispiel eine console.log widerzuspiegeln würde schnell gefeuert werden, mehrere Male, guter Punkt - wird bearbeiten – JordanHendrix

Verwandte Themen