Mã bài kiểm tra trắc nghiệm JavaScript với bộ đếm thời gian

Xin chào độc giả, Hôm nay trong blog này, bạn sẽ tìm hiểu cách Tạo Ứng dụng đố vui với Bộ đếm thời gian bằng HTML CSS & JavaScript. Trước đó, tôi đã chia sẻ một blog về cách tạo Trang web danh mục đầu tư cá nhân đáp ứng và bây giờ là lúc để tạo Ứng dụng web đố vui bằng JavaScript

Trong chương trình này [Ứng dụng đố vui có hẹn giờ], có ba lớp hoặc hộp và các hộp này được hiển thị lần lượt trên một nút cụ thể được nhấp. Lúc đầu, trên trang web hiển thị một nút có nhãn là “Bắt đầu Quiz” và khi bạn nhấp vào nút đó, thì hộp thông tin xuất hiện với hoạt ảnh bật lên. Trong hộp thông tin này, có một số quy tắc của bài kiểm tra và hai nút có nhãn là “Thoát” và “Tiếp tục”. Khi bạn bấm vào nút Thoát, hộp thông tin sẽ ẩn đi nhưng khi bạn bấm vào nút Tiếp tục, Hộp câu hỏi sẽ xuất hiện

Khi hết thời gian của bài kiểm tra, người dùng sẽ thấy một hộp cảnh báo có nội dung “Hết thời gian” và bài kiểm tra sẽ được đánh giá và kết quả cuối cùng sẽ được hiển thị

Hãy xem những gì chúng ta cần để đạt được điều này

Chúng tôi đã thêm hai dòng mới trong tệp XML bài kiểm tra, trước các câu hỏi bài kiểm tra

< quiz>
  < title>Java Quiz [2015/01/18]< /title>
  < totalquizquestions>10< /totalquizquestions>
  < quizduration>2< /quizduration>
    < questions>

      < question>
        < quizquestion>Which is the correct syntax ?< /quizquestion>
        < answer> public class ABC extends QWE extends Student< /answer>
        < answer> int i="A";< /answer>
        < answer>String s="Hello";< /answer>
        < answer> private class ABC< /answer>
        < correct>2< /correct>
      < /question>

      < question>
        < quizquestion> Which of the following a is not a keyword in Java ?< /quizquestion>
        < answer>class< /answer>
        < answer>interface< /answer>
        < answer>extends< /answer>
        < answer>abstraction< /answer>
        < correct>3< /correct>
      < /question>

      < question>
        < quizquestion>What is true about Java ?< /quizquestion>
        < answer>Java is platform specific< /answer>
        < answer>Java does not support multiple inheritance< /answer>
        < answer>Java does not run on Linux and Mac< /answer>
        < answer>Java is not a multi-threaded language < /answer>
        < correct>1< /correct>
      < /question>

      < question>
        < quizquestion>Which of the following is an interface ?< /quizquestion>
        < answer>Thread< /answer>
        < answer>Runnable< /answer>
        < answer>Date< /answer>
        < answer>Calendar< /answer>
        < correct>1< /correct>
      < /question>	

	  < question>
        < quizquestion>Which company released Java Version 8 ?< /quizquestion>
        < answer>Sun< /answer>
        < answer>Oracle< /answer>
        < answer>Adobe< /answer>
        < answer>Google< /answer>
        < correct>1< /correct>
      < /question>

     < question>
        < quizquestion>Java comes under which category of languages ?< /quizquestion>
        < answer>First Generation Languages< /answer>
        < answer>Second Generation Languages< /answer>
        < answer>Third Generation Languages< /answer>
        < answer>Fourth Generation Languages< /answer>
        < correct>2< /correct>
      < /question>

      < question>
        < quizquestion>Which is the default package that is automatically visible to your program ?< /quizquestion>
        < answer>java.net< /answer>
        < answer>javax.swing< /answer>
        < answer>java.io< /answer>
        < answer>java.lang< /answer>
        < correct>3< /correct>
      < /question>	 

     < question>
        < quizquestion>Which entry in WEB-INF is used to map a servlet ?< /quizquestion>
        < answer>servlet-mapping< /answer>
        < answer>servlet-registration< /answer>
        < answer>servlet-entry< /answer>
        < answer>servlet-attachment< /answer>
        < correct>0< /correct>
      < /question>	

     < question>
        < quizquestion>What is the length of Java datatype int ?< /quizquestion>
        < answer>32 bit< /answer>
        < answer>16 bit< /answer>
        < answer>64 bit< /answer>
        < answer>Runtime specific< /answer>
        < correct>0< /correct>
      < /question>	

     < question>
        < quizquestion>What is the default value of Java datatype boolean?< /quizquestion>
        < answer>true< /answer>
        < answer>false< /answer>
        < answer>1< /answer>
        < answer>0< /answer>
        < correct>1< /correct>
      < /question>	 	   

    < /questions>
< /quiz>

Đặt hẹn giờ khi bắt đầu một bài kiểm tra mới

Khi người dùng bắt đầu một bài kiểm tra mới, chúng tôi đặt tổng số câu hỏi và thời lượng của bài kiểm tra trong phiên của người dùng làm thuộc tính

request.getSession[].setAttribute["totalNumberOfQuizQuestions",document.getElementsByTagName["totalQuizQuestions"].item[0].getTextContent[]];
				request.getSession[].setAttribute["quizDuration",document.getElementsByTagName["quizDuration"].item[0].getTextContent[]];
				request.getSession[].setAttribute["min",document.getElementsByTagName["quizDuration"].item[0].getTextContent[]];
				request.getSession[].setAttribute["sec",0];

Chúng ta phải giảm bộ đếm thời gian sau mỗi giây, để làm điều đó, chúng ta sẽ tạo một hàm Javascript sẽ được gọi đầu tiên khi trang bài kiểm tra được tải và sau đó chúng ta sẽ gọi hàm đó theo cách đệ quy sau mỗi giây để đếm ngược thời gian

Chức năng Javascript để đếm ngược thời gian

< script language ="javascript" >
        var tim;       
        var min = '${sessionScope.min}';
        var sec = '${sessionScope.sec}';
        var f = new Date[];

        function customSubmit[someValue]{  
        	 document.questionForm.minute.value = min;   
        	 document.questionForm.second.value = sec; 
        	 document.questionForm.submit[];  
        	 }  

        function examTimer[] {
            if [parseInt[sec] >0] {

			    document.getElementById["showtime"].innerHTML = "Time Remaining :"+min+" Minutes ," + sec+" Seconds";
                sec = parseInt[sec] - 1;                
                tim = setTimeout["examTimer[]", 1000];
            }
            else {

			    if [parseInt[min]==0 && parseInt[sec]==0]{
			    	document.getElementById["showtime"].innerHTML = "Time Remaining :"+min+" Minutes ," + sec+" Seconds";
				     alert["Time Up"];
				     document.questionForm.minute.value=0;
				     document.questionForm.second.value=0;
				     document.questionForm.submit[];

			     }

                if [parseInt[sec] == 0] {				
				    document.getElementById["showtime"].innerHTML = "Time Remaining :"+min+" Minutes ," + sec+" Seconds";					
                    min = parseInt[min] - 1;
					sec=59;
                    tim = setTimeout["examTimer[]", 1000];
                }

            }
        }
    < /script>

Cách gọi hàm Javascript

Bây giờ, để gọi hàm Javascript đó, chúng ta sẽ sử dụng thuộc tính onload của thẻ body

< body onload=”examTimer”>

Gửi thời gian làm bài kiểm tra cho người điều khiển kỳ thi

Cho đến bây giờ, chúng tôi đã gửi biểu mẫu câu hỏi kiểm tra trực tiếp tới Bộ điều khiển kỳ thi, nhưng bây giờ chúng tôi phải gửi các tham số của bộ đếm thời gian. phút và giây để khi Trình điều khiển kiểm tra hiển thị câu hỏi tiếp theo, nó cũng sẽ hiển thị thời gian còn lại chính xác. Để đạt được điều đó, chúng tôi đã gửi biểu mẫu theo cách thủ công bằng Javascript và gửi các tham số tối thiểu và giây tới Trình điều khiển bài kiểm tra.  

Gửi biểu mẫu bằng Javascript

Lưu ý rằng khi người dùng nhấp vào nút tiếp theo, trước đó hoặc kết thúc, chức năng Javascript customSubmit[] sẽ được gọi

< form action="exam" method="post" name="questionForm" >
 < c:forEach var="choice" items="${sessionScope.quest.questionOptions}" varStatus="counter">
 < input type="radio" name="answer" value="${counter.count}" >${choice}  < br/>
 < /c:forEach> < br/> 

 < c:if test="${sessionScope.quest.questionNumber > 0}">
 < input type="submit" name="action" value="Previous"  title="customSubmit[]" />
 < /c:if>

 < c:if test="${sessionScope.quest.questionNumber <  sessionScope.totalNumberOfQuizQuestions-1}">
 < input type="submit" name="action" value="Next"  title="customSubmit[]" />
 < /c:if> 

 < input type="submit" name="action" value="Finish Exam"  title="customSubmit[]" />

< input type="hidden" name="minute"/> 
< input type="hidden" name="second"/>

< /form>

hàm customSubmit[]

Hàm customSubmit[] gửi tham số phút và giây tới ExamController

  function customSubmit[someValue]{  
        	 document.questionForm.minute.value = min;   
        	 document.questionForm.second.value = sec; 
        	 document.questionForm.submit[];  
        	 }

Cập nhật Đồng hồ đếm ngược trong Phiên của người dùng

Chúng tôi truy xuất các giá trị của tham số phút và giây được gửi đến ExamController và cập nhật nó trong phiên của người dùng

if[request.getParameter["minute"]!=null]
			{			
			minute=Integer.parseInt[request.getParameter["minute"]];
			second=Integer.parseInt[request.getParameter["second"]];
			request.getSession[].setAttribute["min",request.getParameter["minute"] ];
			request.getSession[].setAttribute["sec",request.getParameter["second"] ];
			}

Xử lý hết thời gian

Khi thời lượng của bài kiểm tra kết thúc, hay nói cách khác khi cả phút và giây đều bằng không. Chúng tôi hiển thị một hộp cảnh báo có nội dung  “Hết thời gian” và đặt giá trị của phút và giây thành 0 rồi gửi biểu mẫu

  if [parseInt[min]==0 && parseInt[sec]==0]{
			    	document.getElementById["showtime"].innerHTML = "Time Remaining :"+min+" Minutes ," + sec+" Seconds";
				     alert["Time Up"];
				     document.questionForm.minute.value=0;
				     document.questionForm.second.value=0;
				     document.questionForm.submit[];

			     }

Chúng tôi phải thay đổi mã để kỳ thi kết thúc khi thời hạn cho kỳ thi kết thúc

________số 8

Vì vậy, một bài kiểm tra có thể được kết thúc bằng cách nhấp trực tiếp vào nút kết thúc hoặc khi hết thời gian giới hạn của bài kiểm tra [cả phút và giây đều bằng 0]

Đó là nó cho bài viết này. Trong bài đăng tiếp theo, chúng tôi sẽ tiếp tục mở rộng ứng dụng câu đố của mình và thêm tính năng mới để người dùng có thể xem lại câu trả lời của mình và biết câu hỏi nào mình đã trả lời sai và câu trả lời nào là đúng. Để tìm hiểu thêm, hãy xem khóa học dành cho nhà phát triển Full Stack này ngay hôm nay

Như mọi khi, bạn có thể tải xuống mã, thay đổi nó theo ý muốn. Đó là cách tốt nhất để hiểu mã. Nếu bạn có bất kỳ câu hỏi hoặc yêu cầu xin vui lòng bình luận dưới đây

Làm cách nào để làm cho các câu hỏi đố xuất hiện cùng một lúc trong JavaScript?

Đây là mã cho div. div. innerHTML = ` name}

Làm cách nào để tạo bài kiểm tra trắc nghiệm bằng JavaScript?

Đoạn mã JavaScript này giúp bạn tạo ứng dụng câu hỏi trắc nghiệm trong dự án web của mình. .
Trước hết, tạo cấu trúc HTML như sau. .
Sau đó, thêm các kiểu CSS sau vào dự án của bạn. .
Cuối cùng, thêm đoạn mã JavaScript sau và hoàn tất

Làm cách nào để tạo bài kiểm tra với các câu hỏi ngẫu nhiên bằng JavaScript?

//biến
var quiz = [];
quiz[0] = new Question["1/4 của 100 bằng bao nhiêu?", ".
quiz[1] = new Question["Máu màu gì?", ".
quiz[2] = new Question["Cỏ màu gì?", ".
quiz[3] = new Question["Con nhện có bao nhiêu chân?", ".
quiz[4] = new Question["Ai là vua của Hà Lan?", "

Làm cách nào để tạo một ứng dụng đố vui bằng JavaScript?

Thay đổi tiêu đề của trang từ Tài liệu sang Định dạng Câu đố JavaScript 1 hoặc bất kỳ tên thú vị nào khác mà bạn có thể nghĩ ra. Ngoài ra, hãy tạo một “phong cách. css” tệp CSS và “chỉ mục. js” tệp JavaScript và liên kết chúng. .
Bộ đếm cho câu hỏi hiện tại. .
Một bộ đếm cho điểm số. .
Một loạt các câu hỏi

Chủ Đề