1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
const quotes = [ 'When you have eliminated the impossible, whatever remains, however improbable, must be the truth.', 'There is nothing more deceptive than an obvious fact.', 'I ought to know by this time that when a fact appears to be opposed to a long train of deductions it invariably proves to be capable of bearing some other interpretation.', 'I never make exceptions. An exception disproves the rule.', 'What one man can invent another can discover.', 'Nothing clears up a case so much as stating it to another person.', 'Education never ends, Watson. It is a series of lessons, with the greatest for the last.', ];
let words = []; let wordIndex = 0;
let startTime = Date.now();
const quoteElement = document.getElementById('quote');
const messageElement = document.getElementById('message');
const typedElement = document.getElementById('typed-value')
document.getElementById('start').addEventListener('click', () => { const randomNum = Math.floor(Math.random() * quotes.length); const getQuote = quotes[randomNum]; words = getQuote.split(' ') wordIndex = 0;
const spanList = words.map(function(word) { return `<span>${word} </span>`}) quoteElement.innerHTML = spanList.join('') quoteElement.childNodes[0].className = 'highlight' messageElement.innerText = '';
typedElement.value = '' typedElement.focus();
startTime = new Date().getTime(); })
typedElement.addEventListener('input', () => { const word = words[wordIndex] const typedValue = typedElement.value
if (typedValue === word && wordIndex === words.length - 1) { const finishedTime = new Date().getTime() - startTime; const message = `Congratulations, you've finished in ${finishedTime / 1000} seconds` messageElement.innerText = message; } else if(typedValue.endsWith(' ') && typedValue.trim() === word) { typedElement.value = '' wordIndex = wordIndex + 1; for (const wordElement of quoteElement.childNodes) { wordElement.className = '' } quoteElement.childNodes[wordIndex].className = 'highlight' } else if (word.startsWith(typedValue)) { typedElement.className = '' } else { typedElement.className = 'error' } })
|