Strumento di addestramento del cane uditivo - setTimeout ()
In un precedente articolo, ho iniziato lo sviluppo iterativo di un piccolo programma JavaScript per aiutare l'addestramento di un cane a fare avvisi sonori. Finora, il programma, che è possibile visualizzare qui, include un pulsante di allarme impostato che, quando premuto, fa apparire un avviso che indica che l'allarme è stato disattivato (sebbene l'allarme acustico non sia ancora configurato.) Come passo successivo, abbiamo stanno effettivamente impostando l'attesa tra la pressione del pulsante "imposta sveglia" e l'allarme, così com'è, si spegne.

JavaScript e Document Object Model (DOM) hanno un sacco di gestori di eventi in attesa che accada qualcosa (ad es. al clic, onMouseOver, ...); tuttavia, in questo caso, desideriamo attendere un certo periodo di tempo, il DOM fornisce anche un metodo per farlo setTimeout (). setTimeout () richiede due argomenti, un pezzo di codice o una funzione da eseguire e il tempo di attesa in millisecondi prima di eseguirlo. set_timeout () può anche prendere una terza opzione opzionale che designa il linguaggio di scripting utilizzato: JavaScript, JScript o VBScript (questo fa parte del DOM, non JavaScript, ricorda.)

Il nostro nuovo codice è simile al seguente:


funzione do_alarm () {
// determina il tempo di attesa in secondi
wait_secs = 52; // per ora, basta definirlo
// aspetta che il tempo sia attivo e suoni l'allarme
setTimeout (sound_alarm (), (wait_secs * 1000))
}


Funziona alla grande, ma è difficile da dire, perché nulla cambia dopo aver premuto il pulsante fino allo scadere del tempo. Tuttavia, il DOM può aiutarci anche con questo. Ho aggiunto le seguenti 2 righe all'inizio di do_alarm () funzione:


// contrassegna l'allarme come impostato
document.getElementById ( "alarm_button"). disabilitato = true
document.getElementById ("button_allarme"). value = "Set allarmi"


Questo cambia il pulsante che abbiamo premuto per impostare la sveglia in modo da dire "Imposta sveglia" e la disabilita. Se vogliamo poter riutilizzare l'allarme, dovremo riportare il pulsante al suo stato originale. Ho aggiunto questo alla funzione sound_alarm (). Puoi visualizzare tutto il codice e provare un esempio funzionante qui.