Bài tập Thực thi một hàm xử lý liên tục sau 1 khoảng thời gian bằng hàm setInterval

Hàm setInterval()

Hàm setInterval() của Javascript có nhiệm vụ thực thi hàm xử lý

liên tục

, sau 1 khoảng thời gian nào đó, tính bằng millisecond.

Có nghĩa là cứ sau 1 khoảng thời gian, thì hàm xử lý sẽ được gọi.

Cú pháp sử dụng:

var boDemThoiGianChayLienTuc = setInterval(
   function(){ 
      alert("Hello"); 
   }, 3000);

Hàm clearInterval()

Hàm clearInterval() của Javascript dùng để xóa bộ đếm thời gian chạy liên tục khi không cần sử dụng nữa.

Cú pháp sử dụng:

clearInterval(boDemThoiGianChayLienTuc);

Yêu cầu

Tạo bộ đếm ngược trong vòng 60s, hiển thị số giây hiện tại ra màn hình cho người dùng xem.

  • Nếu số giây đã đếm hết (tức số đếm hiện tại <= 0) thì hiển thị thông báo: Bạn đã hết giờ làm bài.
  • Nếu số giây còn thì hiển thị số giây còn lại.

Hướng dẫn

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Học JQuery | NenTang.vn</title>
</head>

<body>
  <!-- Phần trình bày Giao diện HTML - START -->

  <h1>Chào mừng các bạn đến với Trang web!</h1>

  Thời gian làm bài:
  <div id="vungketqua">
    60
  </div>

  <!-- Phần trình bày Giao diện HTML - END -->



  <!-- Phần xử lý code JavaScript - START -->
  <!-- Nên viết tất cả các đoạn xủ lý JavaScript vào phần cuối trang, trước khi đóng thẻ <body> là cách viết tốt nhất -->
  <!-- Liên kết thư viện Jquery -->
  <script src="vendor/jquery/jquery.min.js"></script>

  <!-- Viết code Jquery -->
  <script>
    // Tìm đối tượng (element) nào đó => yêu cầu thực thi Hành động gì đó (Action)
    // Cú pháp Jquery
    // $(selector).action();

    // Yêu cầu tiến trình Javascript đợi HTML render (vẽ ra giao diện) xong
    // -> JS mới thực thi
    $(document).ready(function (e) {

      // Tạo biến phạm vi toàn cục
      var boDemThoiGianChayLienTuc;  // Biến lưu trữ bộ đếm thời gian Interval
      var tongsogiay = 60; // Tổng số giây muốn đếm ngược

      // Hàm xử lý logic đếm ngược thời gian
      // Hàm này sẽ được Bộ đếm thời gian Interval gọi đến sau mỗi 1s
      function demnguoc() {

        // Tổng số giây trừ đi 1
        tongsogiay--;

        // Nếu tổng số giây hiện tại <= 0
        // => đã hết thời gian
        if(tongsogiay <= 0) {
          // Nhờ JQUERY tìm vùng div#vungketqua, cập nhật thành dòng chữ HTML mong muốn
          var htmlStr = '<h1 style="color: red;">Đã hết thời gian! Vui lòng nộp bài!</h1>';
          $('#vungketqua').html(htmlStr);

          // Xóa bộ đếm thời gian, được lưu trong biến `boDemThoiGianChayLienTuc`
          clearInterval(boDemThoiGianChayLienTuc);
        }
        else {
          $('#vungketqua').html(tongsogiay);
        }
      }

      // Sử dụng hàm setInterval() để thực thi hàm liên tục sau 1 khoảng thời gian (tính bằng milliseconds)
      // Cứ sau 1s thì gọi hàm demnguoc()
      // Bộ đếm thời gian được lưu trữ trong biến `boDemThoiGianChayLienTuc`
      boDemThoiGianChayLienTuc = setInterval(
        
        // Liên tục gọi hàm
        function() {
          demnguoc();
        },
        1000 // 1000ms = 1s
      
      );
    });
  </script>
  <!-- Phần xử lý code JavaScript - END -->
</body>

</html>

Link minh họa

http://frontend-basic.learning.nentang.vn/course-jquery/bai-tap-thuc-thi-mot-ham-xu-ly-lien-tuc-sau-1-khoang-thoi-gian-bang-ham-setInterval/index.html

Hàm setInterval() của Javascript có nhiệm vụ thực thi hàm xử lý, sau 1 khoảng thời gian nào đó, tính bằng millisecond. Có nghĩa là cứ sau 1 khoảng thời gian, thì hàm xử lý sẽ được gọi.Hàm clearInterval() của Javascript dùng để xóa bộ đếm thời gian chạy liên tục khi không cần sử dụng nữa.Tạo bộ đếm ngược trong vòng 60s, hiển thị số giây hiện tại ra màn hình cho người dùng xem.