0

Here's my code in javascript, code calculates the score and shows the result on the result.html page.

Then using localStorage I need to limit the number of attempts identifying the user by his ID. If attempts are less than 3 I need to give a link to the quiz page on the result page and suggest trying again. If there was already 3 attempt I don't give the link to the quiz and prevent user to do the quiz again.

    "use strict"

function saveResult(firstn,sutid,score){
    if(typeof(Storage)!=="undefined"){
        localStorage.setItem("firstn",firstn);
        localStorage.setItem("sutid",sutid);
        localStorage.setItem("score",score);
    }
}

    function getResult(){
        if(typeof(Storage)!=="undefined"){
            if(localStorage.getItem("sutid")!==null){
                var firstn=document.getElementById("firstn");
                firstn.textContent=localStorage.getItem("firstn");

                var sutid=document.getElementById("sutid");
                sutid.textContent=localStorage.getItem("sutid");

                var score=document.getElementById("score");
                score.value=localStorage.getItem("score");
            }
        }
    }

function validate(){
    var errMsg="";
    var result=true;
    var score=0;

    //declaring variables for info and q1,4,5
    var sutid=document.getElementById("sutid").value;
    var q1=document.getElementById("proglang").value.trim();
    var q4=document.getElementById("list").value;
    var q5=document.getElementById("percent").value;
    var firstn=document.getElementById("firstn").value;
    var lastn=document.getElementById("lastn").value;

    //check first name
    if (firstn==""){
        errMsg+="Please enter your name.<br>";
        result=false;
    }

    //check for last name
    if (lastn==""){
        errMsg+="Please enter your last name.<br>";
        result=false;
    }



    //check student id
    if (sutid==""){
        errMsg+="Please enter your students id.<br>";
        result=false;
    }

    //question 1
    if (q1==""){
        errMsg+="PLease answer the question 1.<br>";
        result=false;
    }
    else if (q1.match(/dart/i)){ //we use i to prevent case sensitivity
        score+=10;
    }

    //question 2
    var m17=document.getElementById("m17").checked;
    var m19=document.getElementById("m19").checked;
    var mr17=document.getElementById("mr17").checked;

    if (!(m17 || m19 || mr17)){
        errMsg+="Please answer the question 2.<br>";
        result=false;
    }

    else if (m17){
        score+=10;
    }

    //question 3
    var arg=document.getElementById("arg").checked;
    var vrb=document.getElementById("vrb").checked;
    var rear=document.getElementById("rear").checked;

    if (!(arg || vrb || rear)){
        errMsg+="Please answer the question 3.<br>";
        result=false;
    }
    //question has 2 correct answers
    else if (arg && vrb){
        score+=10;
    }

    //question 4
    if (q4==""){
        errMsg+="PLease answer the question 4.<br>";
        result=false;
    }

    else if (q4=="setState"){
        score+=10;
    }

    //question 5
    if (q5==""){
        errMsg=+"Please answer the question 5.<br>";
        result=false;
    }

    else if (q5==90){
        score+=10;
    }

    //check error messages 
    if (errMsg!=""){
        document.getElementById("err").innerHTML=errMsg;
    }
    else if (score==0){
        document.getElementById("err").innerHTML="Score is zero. please try again";
        result=false;
    }
    else { //if no errors and score>0, send data to localStorage 
        saveResult(firstn,sutid,score);
    }
    return result;
}

function init(){
    if (document.getElementById("quizPage")){ //quiz page init
        document.getElementById("quizForm").onsubmit=validate;
    }
    else if (document.getElementById("resultPage")){ //result page init
        getResult();
    }
}
window.onload=init;
sn-
  • 466
  • 1
  • 5
  • 15
Lika
  • 1
  • 1
  • If it's in localstorage it's not limited. The user can just delete that and try again. You *need* a server-side (or serverless database like Firebase) data store that's external to the user's computer. – tadman May 23 '21 at 07:14
  • There's already [plenty of content here](https://stackoverflow.com/search?q=localstorage) regarding interacting with the *localstorage*, **have you searched**? – vsync May 23 '21 at 07:14
  • Also on result page it must show the number of attempts to user – Lika May 23 '21 at 07:16
  • it's as easy as setting a variable and then reading it on page refresh (then simply print it on the screen) – vsync May 23 '21 at 07:17

0 Answers0