---
# System prepended metadata

title: HTML buổi 2

---

# Thuộc tính background 
Trong HTML và CSS, thuộc tính `background` được sử dụng để định dạng và thiết lập hình nền cho các phần tử HTML như `<div>`, `<p>`, hoặc bất kỳ phần tử nào khác. `background` cho phép bạn thiết lập một loạt các thuộc tính liên quan đến hình nền của một phần tử. Dưới đây là một số thành phần quan trọng của thuộc tính `background`:

1. `background-color`: Đây là thuộc tính để thiết lập màu nền cho phần tử. Bạn có thể sử dụng màu bằng tên, mã hex hoặc mã RGB. Ví dụ:

```css
div {
  background-color: #ff0000; /* Màu đỏ */
}
```

2. `background-image`: Thuộc tính này cho phép bạn đặt một hình ảnh làm nền cho phần tử. Bạn sử dụng đường dẫn đến tệp hình ảnh bằng cách cung cấp URL. Ví dụ:

```css
div {
  background-image: url('background.jpg');
}
```

3. `background-repeat`: Thuộc tính này quy định cách hình ảnh nền sẽ lặp lại trên phần tử khi kích thước của phần tử nhỏ hơn hình ảnh. Các giá trị phổ biến cho `background-repeat` là `repeat` (lặp lại cả chiều ngang và chiều dọc), `repeat-x` (lặp lại chỉ chiều ngang), `repeat-y` (lặp lại chỉ chiều dọc) và `no-repeat` (không lặp lại). Ví dụ:

```css
div {
  background-image: url('background.jpg');
  background-repeat: no-repeat; /* Không lặp lại */
}
```

4. `background-position`: Thuộc tính này xác định vị trí ban đầu của hình ảnh nền trong phần tử. Bạn có thể sử dụng giá trị như `center`, `left top`, `right bottom`, hoặc cặp giá trị phần trăm hoặc pixel để chỉ định vị trí. Ví dụ:

```css
div {
  background-image: url('background.jpg');
  background-position: center; /* Đặt ảnh nền ở giữa */
}
```

5. `background-size`: Thuộc tính này cho phép bạn điều chỉnh kích thước của hình ảnh nền. Bạn có thể sử dụng giá trị như `cover` (phủ kín phần tử), `contain` (phù hợp vừa đủ), hoặc cặp giá trị phần trăm hoặc pixel. Ví dụ:

```css
div {
  background-image: url('background.jpg');
  background-size: cover; /* Phủ kín phần tử */
}
```

Các thuộc tính `background` này có thể được kết hợp để tạo ra hình nền tùy chỉnh cho các phần tử HTML và làm cho trang web của bạn trở nên hấp dẫn hơn.

Bạn có thể viết nhiều thuộc tính `background` vào một phần tử để thiết lập nhiều tính chất liên quan đến hình nền. Khi bạn viết nhiều thuộc tính `background`, các thuộc tính này sẽ được áp dụng lần lượt theo thứ tự từ trái sang phải. Điều này có nghĩa là thuộc tính sau sẽ ghi đè lên thuộc tính trước nếu chúng có cùng thuộc tính.

Ví dụ, bạn có thể viết một đoạn mã CSS như sau:

```css
div {
  background-color: #ff0000; /* Màu đỏ */
  background-image: url('background.jpg'); /* Hình ảnh nền */
  background-repeat: no-repeat; /* Không lặp lại */
  background-position: center; /* Đặt ảnh nền ở giữa */
}
```

Trong trường hợp này, màu đỏ sẽ là màu nền chính của phần tử `<div>`, nhưng nếu hình ảnh nền không thể tải được hoặc không tồn tại, màu đỏ sẽ hiển thị. Nếu bạn muốn hình ảnh nền và màu nền được hiển thị đồng thời, bạn có thể sử dụng CSS `linear-gradient` để kết hợp cả hai.

```css
div {
  background: #ff0000 url('background.jpg') no-repeat center;
}
```

Khi bạn viết một thuộc tính `background` như trên, nó sẽ thiết lập cùng một màu đỏ và hình ảnh nền với các thuộc tính riêng lẻ đã được đề cập trước đó.

<hr>

# Danh sách trong HTML5
Trong HTML, bạn có thể tạo danh sách để sắp xếp hoặc liệt kê thông tin. Có ba loại danh sách chính: danh sách không thứ tự (Unordered Lists), danh sách có thứ tự (Ordered Lists), và danh sách mô tả (Description Lists). Dưới đây là một giới thiệu đầy đủ về từng loại danh sách:

### 1. Danh sách không thứ tự (Unordered Lists):

Danh sách không thứ tự được sử dụng để hiển thị các mục trong danh sách mà không có thứ tự cụ thể. Mỗi mục trong danh sách không thứ tự thường được hiển thị với một ký tự hoặc biểu tượng như dấu bất kỳ, dấu chấm tròn, hoặc dấu gạch ngang. Để tạo danh sách không thứ tự, bạn sử dụng thẻ `<ul>` (unordered list) và các thẻ `<li>` (list item) để liệt kê các mục.

```html
<ul>
  <li>Mục 1</li>
  <li>Mục 2</li>
  <li>Mục 3</li>
</ul>
```

### 2. Danh sách có thứ tự (Ordered Lists):

Danh sách có thứ tự được sử dụng để hiển thị các mục trong danh sách theo một thứ tự cụ thể, thường là số hoặc chữ cái. Mỗi mục trong danh sách có thứ tự thường bắt đầu với một con số hoặc chữ cái và sẽ được đánh số tự động. Để tạo danh sách có thứ tự, bạn sử dụng thẻ `<ol>` (ordered list) và các thẻ `<li>` (list item) để liệt kê các mục.

```html
<ol>
  <li>Mục 1</li>
  <li>Mục 2</li>
  <li>Mục 3</li>
</ol>
```

### 3. Danh sách mô tả (Description Lists):

Danh sách mô tả được sử dụng để hiển thị các mục kèm theo mô tả hoặc định nghĩa cho từng mục. Mỗi mục trong danh sách mô tả được xác định bằng cặp thẻ `<dt>` (description term - từ mô tả) cho mục và `<dd>` (description details - chi tiết mô tả) cho phần mô tả.

```html
<dl>
  <dt>Khái niệm 1</dt>
  <dd>Mô tả cho khái niệm 1.</dd>

  <dt>Khái niệm 2</dt>
  <dd>Mô tả cho khái niệm 2.</dd>
</dl>
```

### Thuộc tính và CSS cho danh sách:

- Bạn có thể sử dụng thuộc tính `type` trong thẻ `<ol>` để xác định loại đánh số (số, chữ cái, chữ la tinh, số La Mã, v.v.).
- Bạn cũng có thể sử dụng CSS để tùy chỉnh giao diện của danh sách, bao gồm màu sắc, kích thước, đường viền và khoảng cách giữa các mục.

Danh sách là một phần quan trọng trong HTML để hiển thị thông tin có cấu trúc và dễ đọc.

Dưới đây là một số mẹo thường sử dụng khi làm việc với danh sách trong HTML 5:

1. **Đổi đánh dấu danh sách**:
   - Để thay đổi đánh dấu của danh sách không thứ tự (unordered list), bạn có thể sử dụng thuộc tính `list-style-type` trên phần tử danh sách (`<ul>` hoặc `<ol>`) để chọn loại đánh dấu khác nhau, chẳng hạn như dấu chấm, số, chữ cái, v.v.
   
   ```css
   ul {
     list-style-type: square; /* Đổi đánh dấu thành hình vuông */
   }
   ```

2. **Dàn ngang danh sách**:
   - Để dàn ngang danh sách không thứ tự, bạn có thể sử dụng CSS flexbox hoặc CSS grid.
   - Sử dụng `display: flex;` trên container và `flex-direction: row;` để dàn ngang các mục con.
   
   ```css
   ul {
     display: flex;
     flex-direction: row;
   }
   li {
     margin-right: 10px; /* Tạo khoảng cách giữa các mục */
   }
   ```

3. **Làm menu**:
   - Để tạo một menu ngang hoặc dọc từ danh sách, bạn có thể sử dụng CSS để tùy chỉnh giao diện menu và thêm hiệu ứng hover.
   - Để tạo menu ngang, sử dụng flexbox để dàn ngang các mục menu.
   
   ```html
   <ul class="menu">
     <li><a href="#">Trang chủ</a></li>
     <li><a href="#">Sản phẩm</a></li>
     <li><a href="#">Dịch vụ</a></li>
     <li><a href="#">Liên hệ</a></li>
   </ul>
   ```

   ```css
   .menu {
     display: flex;
     list-style: none;
   }
   .menu li {
     margin-right: 20px;
   }
   .menu a {
     text-decoration: none;
     color: #333;
   }
   .menu a:hover {
     color: #FF0000; /* Màu khi hover */
   }
   ```

4. **Sử dụng danh sách mô tả (description lists)**:
   - Để sử dụng danh sách mô tả, bạn có thể sử dụng thẻ `<dl>` cho danh sách, `<dt>` cho các từ khóa mô tả, và `<dd>` cho các mô tả.
   
   ```html
   <dl>
     <dt>HTML</dt>
     <dd>Ngôn ngữ đánh dấu siêu văn bản.</dd>
     
     <dt>CSS</dt>
     <dd>Ngôn ngữ mô tả kiểu.</dd>
   </dl>
   ```

   - Sử dụng CSS để tùy chỉnh giao diện của danh sách mô tả.

   ```css
   dt {
     font-weight: bold;
   }
   dd {
     margin-left: 20px;
   }
   ```

Các mẹo này giúp bạn làm việc với danh sách trong HTML 5 một cách linh hoạt và tạo ra các thành phần web hấp dẫn và dễ sử dụng.

<hr>

# Đường dẫn tương đối, đường dẫn tuyệt đối, thẻ a, thẻ img, redirect trang

Trong lập trình web, đường dẫn (path) là cách xác định vị trí của tệp hoặc tài nguyên (như hình ảnh, trang HTML, hoặc tệp CSS) trong cấu trúc thư mục của dự án web của bạn. Có hai loại đường dẫn chính: đường dẫn tương đối (relative paths) và đường dẫn tuyệt đối (absolute paths).

### 1. Đường dẫn tương đối (Relative Paths):

Đường dẫn tương đối dựa trên vị trí hiện tại của tệp HTML hoặc tài liệu gọi đến tệp hoặc tài nguyên khác. Điều này có nghĩa là bạn chỉ cần chỉ rõ mối quan hệ giữa tệp cần truy cập và tệp gọi nó. Các loại đường dẫn tương đối bao gồm:

- `./`: Đường dẫn hiện tại.
- `../`: Thư mục cha của đường dẫn hiện tại.
- Tên tệp hoặc thư mục liên quan đến vị trí hiện tại.

Ví dụ:
- `./images/pic.jpg`: Truy cập tệp "pic.jpg" trong thư mục "images" cùng cấp với tệp HTML hiện tại.
- `../styles/main.css`: Truy cập tệp "main.css" trong thư mục cha của tệp HTML hiện tại.
- `../../index.html`: Truy cập tệp "index.html" trong thư mục cha của thư mục cha của tệp HTML hiện tại.

### 2. Đường dẫn tuyệt đối (Absolute Paths):

Đường dẫn tuyệt đối cung cấp địa chỉ hoàn chỉnh của tệp hoặc tài nguyên trên máy chủ web hoặc trên internet. Điều này có nghĩa là bạn phải chỉ rõ địa chỉ URL hoặc đường dẫn từ gốc của trang web để truy cập tài nguyên. Ví dụ:

- `https://example.com/images/pic.jpg`: Đường dẫn tuyệt đối đến hình ảnh "pic.jpg" trên mạng Internet.
- `/assets/css/styles.css`: Đường dẫn tuyệt đối từ gốc trang web đến tệp CSS.

### Sử dụng đường dẫn trong HTML và CSS:

1. Trong HTML:
   - Để liên kết đến một tệp hoặc tài nguyên trong thẻ HTML, bạn sử dụng thuộc tính `src`, `href`, hoặc `data` với giá trị là đường dẫn.
   - Ví dụ: `<img src="./images/pic.jpg" alt="Hình ảnh">`, `<a href="../about.html">Về chúng tôi</a>`.

2. Trong CSS:
   - Để sử dụng tệp CSS bên ngoài, bạn cũng sử dụng đường dẫn tương đối hoặc tuyệt đối trong lệnh `url()` trong các quy tắc CSS.
   - Ví dụ: `background-image: url('../images/background.jpg');`

Lựa chọn giữa đường dẫn tương đối và đường dẫn tuyệt đối phụ thuộc vào cấu trúc của dự án web của bạn và cách bạn muốn quản lý đường dẫn. Đường dẫn tương đối thường được ưa chuộng trong các dự án lớn vì chúng linh hoạt hơn và dễ bảo trì khi bạn di chuyển dự án từ một vị trí này sang vị trí khác. Đường dẫn tuyệt đối thường được sử dụng khi bạn cần liên kết đến các tài nguyên ngoài hoặc cần định rõ một đường dẫn cụ thể.


Sử dụng các thẻ `<a>`, `<img>`, và đường dẫn (URLs) là một phần quan trọng trong việc tạo liên kết và hiển thị hình ảnh trong trang web của bạn. Dưới đây là một số thông tin về cách sử dụng chúng:

### Thẻ `<a>` (Anchor Tag) - Liên kết:

Thẻ `<a>` được sử dụng để tạo liên kết đến các trang web khác, tài liệu, tài nguyên, hoặc thậm chí trang web trong cùng một trang.

**Sử dụng đường dẫn (URL) để liên kết đến trang web khác:**
```html
<a href="https://www.example.com">Trang web mẫu</a>
```

**Liên kết đến trang HTML nội bộ trong cùng dự án:**
```html
<a href="about.html">Trang Giới thiệu</a>
```

### Thẻ `<img>` - Hình ảnh:

Thẻ `<img>` được sử dụng để hiển thị hình ảnh trên trang web của bạn.

**Sử dụng đường dẫn (URL) để hiển thị hình ảnh từ mạng:**
```html
<img src="https://www.example.com/images/pic.jpg" alt="Hình ảnh mẫu">
```

**Sử dụng đường dẫn tương đối để hiển thị hình ảnh từ cùng dự án:**
```html
<img src="./images/pic.jpg" alt="Hình ảnh">
```

### Sử dụng đường dẫn:

- Đường dẫn tuyệt đối: Sử dụng đường dẫn tuyệt đối khi bạn muốn truy cập tệp hoặc tài nguyên từ một địa chỉ URL hoặc đường dẫn cụ thể trên máy chủ web hoặc internet.

- Đường dẫn tương đối: Sử dụng đường dẫn tương đối khi bạn muốn xác định mối quan hệ giữa tệp hoặc tài nguyên và trang HTML hiện tại. Điều này làm cho việc di chuyển dự án hoặc thay đổi cấu trúc thư mục dễ dàng hơn.

**Ví dụ sử dụng đường dẫn tương đối trong thẻ `<a>`:**
```html
<a href="./about.html">Trang Giới thiệu</a>
```

**Ví dụ sử dụng đường dẫn tương đối trong thẻ `<img>`:**
```html
<img src="./images/pic.jpg" alt="Hình ảnh">
```

Khi sử dụng đường dẫn, hãy chắc chắn rằng đường dẫn bạn cung cấp là chính xác để tránh lỗi không tìm thấy tệp hoặc tài nguyên. Kiểm tra kỹ đường dẫn và đảm bảo rằng chúng đúng định dạng và trỏ đến đúng vị trí.


# CSS3

CSS3 là phiên bản thứ ba của Cascading Style Sheets (CSS), một ngôn ngữ được sử dụng để kiểm soát giao diện và bố cục của trang web hoặc ứng dụng web. CSS3 đã mang lại nhiều tính năng mới và cải tiến so với các phiên bản CSS trước đó. Dưới đây là một số khái niệm quan trọng liên quan đến CSS3 và các cách để tích hợp CSS vào trang web:

### 1. CSS3:

CSS3 là phiên bản tiếp theo của CSS (Cascading Style Sheets) và cung cấp nhiều tính năng mới và cải tiến, bao gồm:

- **CSS Selectors**: CSS3 giới thiệu các lựa chọn (selectors) mới và mạnh mẽ cho phép bạn lựa chọn các phần tử dựa trên nhiều tiêu chí khác nhau, chẳng hạn như lựa chọn con đầu tiên hoặc con cuối cùng, lựa chọn sử dụng thuộc tính đặc biệt, v.v.

- **CSS Transitions và Animations**: CSS3 cho phép bạn tạo các hiệu ứng chuyển đổi (transitions) và hoạt ảnh (animations) mà không cần sử dụng JavaScript. Điều này giúp tạo ra các trang web động và hấp dẫn hơn.

- **CSS3 Flexbox và Grid**: CSS3 cung cấp hai mô hình bố cục linh hoạt, Flexbox và Grid, giúp bạn dễ dàng điều chỉnh và điều hướng bố cục trang web.

- **CSS3 Gradient và Shadow**: CSS3 cho phép tạo nền gradient và hiệu ứng bóng đổ một cách dễ dàng.

- **CSS3 Responsive Design**: CSS3 hỗ trợ thiết kế đáp ứng (responsive design) bằng cách sử dụng các thuộc tính như `@media` và `viewport` để điều chỉnh giao diện dựa trên kích thước màn hình.

### 2. Inline CSS:

Inline CSS là cách áp dụng CSS trực tiếp vào một phần tử HTML cụ thể bằng cách sử dụng thuộc tính `style`. Ví dụ:

```html
<p style="color: blue; font-size: 16px;">Nội dung định dạng bằng inline CSS.</p>
```

Tuy inline CSS đơn giản và dễ sử dụng, nhưng nó thường không được khuyến nghị sử dụng cho các trang web lớn hoặc phức tạp vì nó làm cho mã HTML trở nên khó quản lý và không thể tái sử dụng.

### 3. Internal CSS:

Internal CSS là cách để định nghĩa kiểu CSS bên trong cùng một tệp HTML bằng cách sử dụng thẻ `<style>`. Kiểu CSS này chỉ áp dụng cho trang HTML hiện tại. Ví dụ:

```html
<!DOCTYPE html>
<html>
<head>
  <style>
    p {
      color: blue;
      font-size: 16px;
    }
  </style>
</head>
<body>
  <p>Nội dung định dạng bằng internal CSS.</p>
</body>
</html>
```

Internal CSS hữu ích khi bạn muốn tùy chỉnh giao diện cho một trang cụ thể mà không ảnh hưởng đến các trang khác trong dự án.

### 4. External CSS:

External CSS là cách để định nghĩa kiểu CSS trong một tệp riêng biệt, sau đó liên kết tệp CSS này vào tệp HTML bằng thẻ `<link>`. Điều này cho phép bạn tái sử dụng kiểu CSS trên nhiều trang trong dự án. Ví dụ:

```html
<!-- Tạo tệp CSS riêng (ví dụ: styles.css) -->
/* styles.css */
p {
  color: blue;
  font-size: 16px;
}
```

```html
<!-- Liên kết tệp CSS external vào tệp HTML -->
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
  <p>Nội dung định dạng bằng external CSS.</p>
</body>
</html>
```

External CSS là cách tốt nhất để duy trì mã CSS và tạo kiểu cho nhiều trang trong dự án.


# CSS Selector
CSS selectors là một phần quan trọng trong việc xác định các phần tử HTML mà bạn muốn áp dụng các luật CSS. Dưới đây là các quy tắc và cú pháp cơ bản khi sử dụng CSS selectors:

1. **Chọn phần tử theo tên thẻ (element selectors):**
   - Sử dụng tên thẻ HTML để chọn tất cả các phần tử của loại đó.
   - Ví dụ: `p` chọn tất cả các phần tử `<p>`.

2. **Chọn phần tử theo lớp (class selectors):**
   - Sử dụng dấu chấm (`.`) trước tên lớp để chọn tất cả các phần tử có thuộc tính `class` tương ứng.
   - Ví dụ: `.my-class` chọn tất cả các phần tử có `class="my-class"`.

3. **Chọn phần tử theo ID (ID selectors):**
   - Sử dụng dấu thăng (#) trước tên ID để chọn phần tử có thuộc tính `id` tương ứng (lưu ý rằng một ID duy nhất chỉ nên xuất hiện trên một trang).
   - Ví dụ: `#my-id` chọn phần tử có `id="my-id"`.

4. **Chọn phần tử con (descendant selectors):**
   - Sử dụng khoảng trắng để chọn các phần tử con của một phần tử khác.
   - Ví dụ: `ul li` chọn tất cả các phần tử `<li>` trong một danh sách `<ul>`.

5. **Chọn phần tử theo thuộc tính (attribute selectors):**
   - Sử dụng dấu ngoặc vuông và tên thuộc tính để chọn các phần tử có thuộc tính cụ thể.
   - Ví dụ: `[type="text"]` chọn tất cả các phần tử có `type="text"`.

6. **Chọn phần tử theo trạng thái (pseudo-class selectors):**
   - Sử dụng các pseudo-class như `:hover`, `:active`, `:focus`, v.v., để chọn các phần tử trong trạng thái cụ thể.
   - Ví dụ: `a:hover` chọn các liên kết khi di chuột qua chúng.

7. **Chọn phần tử theo vị trí (child and sibling selectors):**
   - Sử dụng `:first-child`, `:last-child`, `:nth-child()`, `+`, `~`, v.v., để chọn các phần tử dựa trên vị trí của chúng trong cấu trúc DOM.
   - Ví dụ: `li:first-child` chọn phần tử `<li>` đầu tiên trong danh sách.

8. **Chọn phần tử theo giá trị (attribute value selectors):**
   - Sử dụng `^`, `$`, `*`, để chọn các phần tử dựa trên giá trị thuộc tính cụ thể.
   - Ví dụ: `[href^="https://"]` chọn các liên kết có `href` bắt đầu bằng "https://".

9. **Chọn phần tử theo trạng thái của form (form pseudo-class selectors):**
   - Sử dụng pseudo-class như `:checked`, `:disabled`, để chọn các phần tử input trong trạng thái cụ thể.
   - Ví dụ: `input[type="radio"]:checked` chọn các nút radio đã được chọn.

10. **Chọn phần tử theo chuỗi văn bản (substring matching attribute selectors):**
    - Sử dụng `*`, `^`, `$`, để chọn các phần tử dựa trên chuỗi văn bản trong thuộc tính.
    - Ví dụ: `[href*="example"]` chọn các liên kết có "example" xuất hiện ở bất kỳ đâu trong `href`.

Nhớ rằng bạn có thể kết hợp các selectors để tạo ra các lựa chọn phức tạp hơn. CSS selectors giúp bạn xác định cách áp dụng kiểu cho các phần tử HTML trong trang web của bạn một cách linh hoạt và mạnh mẽ.

# Javascript - Điều kiện - Vòng lặp và gắn với danh sách
Trong JavaScript, có nhiều toán tử phổ biến được sử dụng để thực hiện các phép tính và so sánh giữa các giá trị. Dưới đây là một số operator phổ biến:

### Toán tử Số học:

1. **Phép cộng (`+`)**: Thực hiện phép cộng giữa hai số.

2. **Phép trừ (`-`)**: Thực hiện phép trừ giữa hai số.

3. **Phép nhân (`*`)**: Thực hiện phép nhân giữa hai số.

4. **Phép chia (`/`)**: Thực hiện phép chia giữa hai số.

5. **Phép chia lấy dư (`%`)**: Lấy phần dư sau phép chia giữa hai số.

### Toán tử Gán:

6. **Toán tử Gán (`=`)**: Gán giá trị từ bên phải cho biến bên trái.

7. **Toán tử Gán với cộng (`+=`), trừ (`-=`), nhân (`*=`), chia (`/=`)**: Thực hiện phép tính và gán kết quả vào biến.

### Toán tử So sánh:

8. **So sánh bằng (`==`) và so sánh tuyệt đối (`===`)**: So sánh giá trị của hai biểu thức.

9. **So sánh khác bằng (`!=`) và so sánh khác tuyệt đối (`!==`)**: So sánh giá trị của hai biểu thức.

10. **So sánh lớn hơn (`>`), nhỏ hơn (`<`), lớn hơn hoặc bằng (`>=`), nhỏ hơn hoặc bằng (`<=`)**: So sánh giá trị của hai biểu thức.

### Toán tử Logic:

11. **Toán tử AND (`&&`)**: Trả về `true` nếu cả hai biểu thức đều `true`.

12. **Toán tử OR (`||`)**: Trả về `true` nếu ít nhất một trong hai biểu thức là `true`.

13. **Toán tử NOT (`!`)**: Đảo ngược giá trị của biểu thức.

### Toán tử Ba ngôi:

14. **Toán tử ba ngôi (`? :`)**: Sử dụng để thực hiện một trong hai hành động dựa trên một điều kiện.

```javascript
let result = (condition) ? value1 : value2;
```

### Điều kiện và Vòng lặp:

#### Câu lệnh điều kiện:

- **`if`**: Sử dụng để thực hiện một khối mã nếu điều kiện là `true`.

```javascript
if (condition) {
  // Mã được thực thi nếu điều kiện là true
} else {
  // Mã được thực thi nếu điều kiện là false (tuỳ chọn)
}
```

- **`else if`**: Sử dụng để thực hiện một khối mã nếu điều kiện trước đó là `false` và điều kiện hiện tại là `true`.

```javascript
if (condition1) {
  // Mã được thực thi nếu điều kiện 1 là true
} else if (condition2) {
  // Mã được thực thi nếu điều kiện 2 là true
} else {
  // Mã được thực thi nếu cả hai điều kiện là false (tuỳ chọn)
}
```

- **`switch`**: Sử dụng để kiểm tra một giá trị và thực hiện các hành động tương ứng với các trường hợp (cases) khác nhau.

```javascript
switch (expression) {
  case value1:
    // Mã được thực thi nếu expression === value1
    break;
  case value2:
    // Mã được thực thi nếu expression === value2
    break;
  default:
    // Mã được thực thi nếu không có trường hợp nào khớp
}
```

#### Vòng lặp:

- **`for`**: Sử dụng để lặp qua một dãy giá trị với số lần lặp xác định.

```javascript
for (let i = 0; i < 5; i++) {
  // Mã được thực thi 5 lần với giá trị của i từ 0 đến 4
}
```

- **`while`**: Sử dụng để lặp khi điều kiện là `true`.

```javascript
while (condition) {
  // Mã được

 thực thi trong khi điều kiện là true
}
```

- **`do...while`**: Sử dụng để thực hiện ít nhất một lần và lặp lại khi điều kiện là `true`.

```javascript
do {
  // Mã được thực thi ít nhất một lần
} while (condition);
```

- **`for...in` và `for...of`**: Sử dụng để lặp qua các thuộc tính của đối tượng hoặc các phần tử của một mảng.

```javascript
for (let key in object) {
  // Mã được thực thi cho mỗi thuộc tính của object
}

for (let element of array) {
  // Mã được thực thi cho mỗi phần tử của array
}
```

JavaScript cung cấp một loạt các cấu trúc điều kiện và vòng lặp để kiểm soát luồng của chương trình và thực hiện các tác vụ khác nhau dựa trên điều kiện và lặp qua các tập hợp dữ liệu.


`querySelector` là một phương thức trong JavaScript DOM (Document Object Model) được sử dụng để chọn một phần tử HTML dựa trên một selector CSS và trả về phần tử đầu tiên khớp với selector đó. Dưới đây là một số thông tin liên quan đến việc sử dụng `querySelector`:

# Sử dụng `querySelector`:

Để sử dụng `querySelector`, bạn cần truy cập phần tử DOM chứa các phần tử bạn muốn chọn. Sau đó, bạn có thể gọi phương thức `querySelector` trên phần tử này và truyền vào một chuỗi CSS selector để chọn phần tử mong muốn.

```javascript
// Chọn phần tử đầu tiên có class="my-class"
const element = document.querySelector(".my-class");

// Chọn phần tử đầu tiên có id="my-id"
const element = document.querySelector("#my-id");

// Chọn phần tử đầu tiên có tên thẻ <p>
const element = document.querySelector("p");

// Chọn phần tử đầu tiên có thuộc tính data-role="button"
const element = document.querySelector("[data-role='button']");
```

### Kiểu dữ liệu trả về:

Phương thức `querySelector` trả về một đối tượng Element hoặc `null` nếu không tìm thấy phần tử nào khớp với selector. Đối tượng Element có thể là một thẻ HTML cụ thể, ví dụ: `<div>`, `<p>`, `<a>`,...

### Thao tác chỉnh sửa HTML:

Sau khi chọn phần tử bằng `querySelector`, bạn có thể thực hiện nhiều thao tác chỉnh sửa HTML trên phần tử đó. Dưới đây là một số ví dụ về các thao tác thông qua các thuộc tính và phương thức trên đối tượng Element:

1. **Thay đổi nội dung (innerHTML và textContent)**:

   ```javascript
   const element = document.querySelector(".my-element");
   element.innerHTML = "<p>Đây là nội dung mới.</p>";
   ```

   Hoặc:

   ```javascript
   const element = document.querySelector(".my-element");
   element.textContent = "Đây là nội dung mới.";
   ```

2. **Thay đổi thuộc tính (setAttribute)**:

   ```javascript
   const element = document.querySelector(".my-element");
   element.setAttribute("href", "https://www.example.com");
   ```

3. **Thêm/xóa lớp (classList)**:

   ```javascript
   const element = document.querySelector(".my-element");
   element.classList.add("new-class");
   element.classList.remove("old-class");
   ```

4. **Thao tác với style (style)**:

   ```javascript
   const element = document.querySelector(".my-element");
   element.style.color = "blue";
   element.style.backgroundColor = "yellow";
   ```

5. **Thêm sự kiện (addEventListener)**:

   ```javascript
   const button = document.querySelector("#my-button");
   button.addEventListener("click", () => {
     alert("Nút đã được nhấn!");
   });
   ```

6. **Xóa phần tử (remove)**:

   ```javascript
   const element = document.querySelector(".my-element");
   element.remove();
   ```

Lưu ý rằng `querySelector` chỉ chọn phần tử đầu tiên khớp với selector. Nếu bạn muốn chọn tất cả các phần tử khớp với selector, bạn có thể sử dụng `querySelectorAll`.
