Speed Typing Test:
Instructions:
By following the above instructions, achieve the given functionality.
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href=
"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity=
"sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
crossorigin="anonymous">
</head>
<body>
<div id="speedTypingTest" class="spinner-border spinner-border-sm">
<span class="sr-only">Loading...</span>
</div>
<p id="timer"></p>
<p id="quoteDisplay"></p>
<p id="result"></p>
<textarea id="quoteInput" onclick="start()"></textarea>
<button type="button" name="submitBtn" onclick="verify()">submit</button>
<button type="button" name="resetBtn" onclick="reset()">reset</button>
<script type="text/javascript">
window.onload=getReq();
var s;
function getReq(){
var theUrl="https://apis.ccbp.in/random-quote";
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );
xmlHttp.send( null );
var obj=JSON.parse(xmlHttp.responseText);
s=obj.content;
if(s!=""){
hideSpinner();
}
document.getElementById("quoteDisplay").innerHTML=s;
}
function changeValue() {
document.getElementById("timer").innerHTML = ++value;
}
var timerInterval = null;
function start() {
stop();
value = 0;
timerInterval = setInterval(changeValue, 1000);
}
var stop = function() {
clearInterval(timerInterval);
}
function verify(){
if(document.getElementById("quoteInput").value===s){
stop();
document.getElementById("result").innerHTML="Success";
}else{
document.getElementById("result").innerHTML="Error the text is not same";
}
}
function reset(){
getReq();
start();
document.getElementById("quoteInput").value=" ";
}
function hideSpinner() {
document.getElementById('speedTypingTest')
.style.display = 'none';
}
</script>
</body>
</html>
Explaination.
1.A http request is made to the URL given to fetch a random quote which the user will type.
2.the http request returns the quote in a JSON format which is then parsed to get the quote from the content field.
3.the quote fetched is then displayed in <p> with id="quoteDisplay" for the user to type.
4.when the user clicks on the text area with id="quoteInput" the timer automatically starts by a call to the start() function
5.the start() function starts the timer with the help of setInterval() function.
6.when the user clicks the submit button after typing the text.
7.verify() method is called which checks if the text entered by the user is matches with given quote or not.
8.if the text doesn't matches the an error message is shown and the timer keeps on going.
9.otherwise the timer stops by calling the stop() function and a success message is printed.
10.reset() function reset the quote,the timer and the entered text to null.
11.boostrap spinner is also shown if the http request takes long to process.
Comments
Leave a comment