Kiểm tra cung hoàng đạo bằng JavaScript

Bài viết này hướng dẫn bạn xây dựng chương trình kiểm tra cung hoàng đạo bằng javascript. Bằng cách nhập ngày sinh, hệ thống sẽ xác định và hiển thị cung hoàng đạo tương ứng.

Xem thêm:

Bài thực hành 5: thẻ select trong HTML

1. Mô tả bài toán

Hãy thiết kế giao diện đơn giản dưới đây:

Cung hoàng đạo javascript

Thực hiện các yêu cầu sau (mã lệnh được viết bằng JavaScript):
– Khi nhấn xem thì ngày sinh được nhập vào txtNgaysinh sẽ được sử dụng để xác định cung hoàng đạo, hiển thị kết quả vào txtCung. Việc xác định cung được tổ chức dưới dạng chương trình con. Nếu nội dung txtNgaysinh trống thì hiển thị thông báo yêu cầu nhập, đồng thời đặt con trỏ vào điều khiển này.
–  Khi nhấn “Xoá” thì nội dung trong cả hai điều khiển trên sẽ được loại bỏ.
Các cung được xác định bởi:
  1. Cung Ma Kết (22/12 – 19/1)
  2. Cung Bảo Bình (20/1 – 18/2)
  3. Cung Song Ngư (19/2 đến 20/3)
  4. Cung Bạch Dương (21/3 đến 20/4)
  5. Cung Kim Ngưu (21/4 đến 21/5)
  6. Cung Song Tử (22/5 đến 21/6)
  7. Cung Cự Giải ( 22/6 đến 22/7)
  8. Cung Sư Tử (23/7 đến 23/8)
  9. Cung Xử Nữ (24/8 đến 22/9)
  10. Cung Thiên Bình (23/9 đến 23/10)
  11. Cung Bọ Cạp (24/10 đến 22/11)
  12. Cung Nhân Mã (23/11 đến 21/12)

Live demo: https://ttnguyenblog.github.io/kiem-tra-cung-hoang-dao-javascript/

>> Source code: https://github.com/ttnguyenblog/kiem-tra-cung-hoang-dao-javascript

2. Hàm xacDinhCungHoangDao

Hàm xacDinhCungHoangDao(ngaySinh) nhận đầu vào là một chuỗi ngày sinh (ngaySinh). Trước tiên, nó tạo một đối tượng Date từ chuỗi ngày sinh đó. Sau đó, nó lấy ngày và tháng từ đối tượng Date và gán chúng vào các biến ngaythang.

Hàm hỗ trợ lấy các mốc thời gian:

  • getDate(): hàm trả về ngày trong tháng (từ ngày 1 – 31).
  • getDay(): hàm trả về ngày trong tuần (0-6), với chủ nhật là 0, thứ 2 là 1, thứ 3 là 2 ,…
  • getMonth(): hàm trả về tháng trong năm (từ 0 – 11), do đó ta cần cộng thêm 1 nha.
  • getFullYear(): hàm trả về năm dạng đầy đủ dạng YYYY.
  • getHours(): hàm trả về số giờ dạng 24h ( từ 0 – 23)
  • getMinutes() trả về phút trong giờ (0 – 59).
  • getSeconds() trả về số giây trong phút (0 – 59).
  • getMilliSeconds() trả về tích tắc trong giây (0 – 999).
  • getTime() Trả về thời gian dạng mili giây.

Tiếp theo, hàm sử dụng câu lệnh switch để kiểm tra giá trị của biến thang. Tùy thuộc vào giá trị của thang, hàm sẽ kiểm tra giá trị của ngay trong mỗi trường hợp để xác định cung hoàng đạo tương ứng. Nếu giá trị ngay nằm trong khoảng hợp lệ, hàm sẽ trả về tên cung hoàng đạo tương ứng.

Hàm xemCung() được gọi khi người dùng nhấn nút để xem cung hoàng đạo. Đầu tiên, nó lấy giá trị ngày sinh từ trường input có id là ‘txtNgaysinh’. Sau đó, nó kiểm tra xem giá trị ngày sinh có rỗng không. Nếu rỗng, một cảnh báo sẽ xuất hiện và trường input sẽ được tập trung để người dùng nhập thông tin. Ngược lại, hàm gọi xacDinhCungHoangDao(ngaySinh) để xác định cung hoàng đạo từ ngày sinh và gán giá trị cung hoàng đạo vào trường input có id là ‘txtCung’.

3. Thiết kế giao diện HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Kiểm tra cung hoàng đạo bằng JavaScript</title>
</head>
<body>
    <div class="container">
        <form action="#" method="post" class="form">
            <div class="form-row">
                <label for="txtNgaysinh" class="form-label">Ngày sinh:</label>
                <input type="date" class="form-inp" id="txtNgaysinh" >
            </div>
            
            <div class="form-row">
                <label for="txtCung" class="form-label" >Cung:</label>
                <input type="text" class="form-inp" id="txtCung" >
            </div>

            <div class="form-btn">
                <input type="button" value="Xem" id="btn-show" class="input-btn" onclick="xemCung()">
                <input type="button" value="Xoá" id="btn-del" class="input-btn" onclick="xoa()">
            </div>
        </form>
    </div>
    <script src="main.js"></script>
</body>
</html>

4. Logic JavaScript Xác Định Cung Hoàng Đạo

Dưới đây là mã JavaScript giúp xác định cung hoàng đạo từ ngày sinh:

function xacDinhCungHoangDao(ngaySinh) {
  const date = new Date(ngaySinh);
  const ngay = date.getDate();
  const thang = date.getMonth() + 1;

  switch (thang) {
    case 1: {
      if (ngay > 0 && ngay <= 19) {
        return "Ma Kết";
      }

      if (ngay > 19 && ngay <= 31) {
        return "Bảo Bình";
      }
      break;
    }

    case 2: {
      if (ngay > 0 && ngay <= 18) {
        return "Bảo Bình";
      }

      if (ngay > 19 && ngay <= 28) {
        return "Song Ngư";
      }
      break;
    }

    case 3: {
      if (ngay > 0 && ngay <= 20) {
        return "Song Ngư";
      }

      if (ngay > 20 && ngay <= 31) {
        return "Bạch Dương";
      }
      break;
    }

    case 4: {
      if (ngay > 0 && ngay <= 20) {
        return "Bạch Dương";
      }

      if (ngay > 20 && ngay <= 30) {
        return "Kim Ngưu";
      }
      break;
    }

    case 5: {
      if (ngay > 0 && ngay <= 20) {
        return "Kim Ngưu";
      }

      if (ngay > 20 && ngay <= 31) {
        return "Song Tử";
      }
      break;
    }

    case 6: {
      if (ngay > 0 && ngay <= 21) {
        return "Song Tử";
      }

      if (ngay > 21 && ngay <= 30) {
        return "Cự Giải";
      }
      break;
    }

    case 7: {
      if (ngay > 0 && ngay <= 22) {
        return "Cự Giải";
      }

      if (ngay > 22 && ngay <= 31) {
        return "Sư Tử";
      }
      break;
    }

    case 8: {
      if (ngay > 0 && ngay <= 22) {
        return "Sư Tử";
      }

      if (ngay > 22 && ngay <= 31) {
        return "Xử Nữ";
      }
      break;
    }

    case 9: {
      if (ngay > 0 && ngay <= 22) {
        return "Xử Nữ";
      }

      if (ngay > 22 && ngay <= 30) {
        return "Thiên Bình";
      }
      break;
    }

    case 10: {
      if (ngay > 0 && ngay <= 23) {
        return "Thiên Bình";
      }

      if (ngay > 23 && ngay <= 31) {
        return "Bọ Cạp";
      }
      break;
    }

    case 11: {
      if (ngay > 0 && ngay <= 22) {
        return "Bọ Cạp";
      }

      if (ngay > 22 && ngay <= 30) {
        return "Nhân Mã";
      }
      break;
    }

    case 12: {
      if (ngay > 0 && ngay <= 21) {
        return "Nhân Mã";
      }

      if (ngay > 21 && ngay <= 31) {
        return "Ma Kết";
      }
      break;
    }
  }
}

function xemCung() {
  const ngaySinh = document.getElementById('txtNgaysinh').value;
  const txtCung = document.getElementById('txtCung');

  if(ngaySinh==''){
      alert('Bạn chưa nhập thông tin, ngu vl');
      document.getElementById('txtNgaysinh').focus();
  }else{
      const cung = xacDinhCungHoangDao(ngaySinh);
      txtCung.value = cung;
  }
}

function xoa(){
  var ngaySinh = document.getElementById('txtNgaysinh');
  ngaySinh.value='';

  var txtCung = document.getElementById('txtCung');
  txtCung.value = '';
}

Trên đây là code mẫu kiểm tra cung hoàng đạo javascript trong chuỗi bài tập thực hành môn lập trình web. Với bài hướng dẫn chi tiết này, bạn đã có thể xây dựng một ứng dụng kiểm tra cung hoàng đạo bằng JavaScript. Cảm ơn các bạn đã tham khảo trên ttnguyen.net.

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em