Cấp độ: elementary35 phútminMiễn phíFreeYoung CreatorYoung Creator

Web động: DOM và sự kiệnDynamic web: DOM and events

Bộ đếm click có animationA click counter with animation

Bạn sẽ học gìWhat you will learn

  • Chọn phần tử với querySelectorSelect elements with querySelector
  • Thay đổi textContent và styleChange textContent and style
  • Lắng nghe sự kiện clickListen to click events

Bạn sẽ tạo gìWhat you will build

Bộ đếm click có animationA click counter with animation

Nội dung bài họcLesson content

DOM là gì?What is the DOM?

DOM (Document Object Model) là cấu trúc cây của trang HTML. JavaScript dùng DOM để thao tác trang web: chọn phần tử, đổi nội dung, đổi màu, thêm/xóa phần tử. DOM biến HTML tĩnh thành web động tương tác được.The DOM (Document Object Model) is the tree structure of an HTML page. JavaScript uses the DOM to manipulate web pages: select elements, change content, change colors, add/remove elements. The DOM turns static HTML into interactive dynamic web.

Chọn phần tử với querySelectorSelecting elements with querySelector

document.querySelector(selector) chọn phần tử đầu tiên khớp. selector giống CSS: "#id" chọn theo id, ".class" chọn theo class, "tag" chọn theo thẻ. querySelectorAll chọn tất cả phần tử khớp (trả về NodeList).document.querySelector(selector) selects the first matching element. Selectors are like CSS: "#id" selects by id, ".class" by class, "tag" by tag name. querySelectorAll selects all matching elements (returns a NodeList).

javascript
                      
                        // Chọn theo id
const btn = document.querySelector('#btn-click');

// Chọn theo class
const cards = document.querySelectorAll('.card');

// Chọn theo thẻ
const headings = document.querySelectorAll('h2');

console.log(btn);        // <button id="btn-click">
console.log(cards.length); // Số phần tử .card
                      
                    

Thay đổi nội dung và styleChanging content and style

element.textContent = "..." đổi chữ bên trong. element.innerHTML = "..." đổi HTML (có thể chèn thẻ). element.style.color = "red" đổi CSS. element.classList.add/remove/toggle quản lý class CSS. Đây là cách JavaScript làm web động.element.textContent = "..." changes the text inside. element.innerHTML = "..." changes HTML (can insert tags). element.style.color = "red" changes CSS. element.classList.add/remove/toggle manages CSS classes. This is how JavaScript makes web dynamic.

javascript
                      
                        const counter = document.querySelector('#counter');
let count = 0;

counter.textContent = '0';        // Đổi chữ
counter.style.color = '#00A8CC';   // Đổi màu
counter.classList.add('active');   // Thêm class
counter.classList.toggle('hidden'); // Bật/tắt class
                      
                    

Sự kiện: addEventListenerEvents: addEventListener

addEventListener lắng nghe sự kiện trên phần tử. Cú pháp: element.addEventListener("event", function). Sự kiện phổ biến: click, input, mouseover, keydown. Khi sự kiện xảy ra, function chạy. Đây là cốt lõi của web tương tác.addEventListener listens for events on an element. Syntax: element.addEventListener("event", function). Common events: click, input, mouseover, keydown. When the event occurs, the function runs. This is the core of interactive web.

javascript
                      
                        const btn = document.querySelector('#btn-click');
const counter = document.querySelector('#counter');
let count = 0;

btn.addEventListener('click', () => {
  count++;
  counter.textContent = count;
  counter.style.color = count > 10 ? '#20A779' : '#00A8CC';
});
                      
                    

Bài tập thực hànhHands-on exercises

1Tạo HTML có 1 button (id="btn") và 1 div (id="result"). JS: khi click button, div hiện "Bạn đã click!".Create HTML with 1 button (id="btn") and 1 div (id="result"). JS: when button clicked, div shows "You clicked!"

Gợi ýHint

Dùng querySelector + addEventListener("click", ...)Use querySelector + addEventListener("click", ...)

Lời giảiSolution
html
                      
                        <button id="btn">Click me</button>
<div id="result"></div>

<script>
const btn = document.querySelector('#btn');
const result = document.querySelector('#result');
btn.addEventListener('click', () => {
  result.textContent = 'Bạn đã click! / You clicked!';
});
</script>
                      
                    

2Tạo bộ đếm: button "+" và button "-", số hiển thị ở giữa. Click + tăng 1, click - giảm 1.Create a counter: "+" button and "-" button, number in middle. Click + increases 1, click - decreases 1.

Gợi ýHint

2 addEventListener riêng cho 2 button. Dùng textContent để cập nhật số.2 separate addEventListener for 2 buttons. Use textContent to update the number.

Lời giảiSolution
html
                      
                        <button id="minus">-</button>
<span id="count">0</span>
<button id="plus">+</button>

<script>
let count = 0;
const display = document.querySelector('#count');
document.querySelector('#plus').addEventListener('click', () => {
  count++;
  display.textContent = count;
});
document.querySelector('#minus').addEventListener('click', () => {
  count--;
  display.textContent = count;
});
</script>
                      
                    

Kiểm traQuiz

Chọn đáp án đúng cho mỗi câu. Nhấn để xem giải thích.Choose the correct answer for each question. Click to see explanation.

Câu 1: DOM là gì?Q1: What is the DOM?

Câu 2: querySelector("#btn") chọn gì?Q2: What does querySelector("#btn") select?

Câu 3: Lệnh nào đổi chữ bên trong phần tử?Q3: Which command changes the text inside an element?

Câu 4: Sự kiện nào xảy ra khi người dùng nhấn nút chuột?Q4: Which event occurs when the user clicks the mouse?

Code mẫuSample code

javascript
                const btn = document.querySelector('#btn-click');
const counter = document.querySelector('#counter');
let count = 0;

btn.addEventListener('click', () => {
  count++;
  counter.textContent = count;
  // Đổi màu / Change color
  counter.style.color = count > 10 ? '#20A779' : '#00A8CC';
});