Bạn có thể thêm một lớp CSS hoặc thêm trực tiếp một hoặc nhiều thuộc tính CSS vào một nút đã chọn để kích hoạt
- Thêm màu nền vào nút đã chọn
- Thêm một lớp CSS vào một nút đã chọn
Thêm màu nền vào nút đã chọn
Khi bạn muốn thêm một số kiểu CSS vào nút đã chọn/được nhấp trong JavaScript để kích hoạt nút đó,
For Loop rất có thể sẽ là lựa chọn đầu tiên trong tâm trí chúng ta
Nhưng, bạn hoàn toàn không cần sử dụng vòng lặp
Hãy xem làm thế nào để làm điều đó trong hành động
Tạo các phần tử nút HTML
Đây là một thẻ div đơn giản với một trình bao bọc id
Nó có năm phần tử nút HTML trong đó
Không có gì lạ mắt
1
2
3
4
5
Đính kèm các sự kiện nhấp chuột vào các phần tử nút HTML
• Trước tiên, hãy thêm trình xử lý sự kiện nhấp vào tất cả các thành phần bên trong div
const wrapper = document.getElementById["wrapper"];
wrapper.addEventListener['click',[e] => {
}]
• Kiểm tra xem mục được nhấp có phải là nút bên trong chức năng gọi lại sự kiện nhấp không
const isButton = e.target.nodeName === 'BUTTON';
• Nếu mục được nhấp KHÔNG phải là nút, hãy thoát chức năng gọi lại sự kiện nhấp
Vì vậy, nó sẽ không thực thi thêm bất cứ điều gì nếu đó không phải là một nút bấm
if [!isButton] {
return;
}
Thêm thuộc tính CSS vào nút được nhấp
Thêm màu nền vào nút được chọn/nhấp bằng cách truy cập đối tượng sự kiện được chuyển vào chức năng gọi lại sự kiện nhấp
e.target.style.background = 'red';
Mã này hoạt động tốt cho đến khi nhấp vào nút thứ hai
Sau đó, cả nút được nhấp lần đầu tiên và lần thứ hai sẽ có màu nền đỏ để biểu thị trạng thái hoạt động
Nhưng những gì chúng tôi muốn là chỉ thêm màu nền cho mục hiện được nhấp và xóa nó khỏi mục đã chọn trước đó
Để làm được điều đó, chúng ta cần chụp nút đã chọn/đã nhấp trước đó và xóa màu nền khỏi nút đó
Chụp mục đã chọn/đã nhấp trước đó
• Khai báo một hằng gọi là prevButton bên ngoài sự kiện nhấn nút
• Đặt giá trị ban đầu của nó thành null
let prevButton = null;
• Bây giờ hãy kiểm tra xem có nút nào được thêm vào hằng số prevButton không
Nếu có, hãy xóa màu nền bằng cách đặt giá trị của nó thành không
if[prevButton !== null] {
prevButton.style.background = 'none';
}
• Cuối cùng, thêm mục hiện được nhấp vào prevButton
Bằng cách này, prevButton không có bất kỳ đối tượng nút nào được nhấp trước đó khi người dùng nhấp vào bất kỳ nút nào lần đầu tiên
Và nó sẽ khả dụng khi người dùng nhấp vào bất kỳ nút nào lần thứ hai trở đi
prevButton = e.target;
Thêm một lớp CSS vào nút đã chọn/được nhấp
• Việc chỉ thêm một thuộc tính CSS qua JavaScript sẽ gặp một số hạn chế
Chúng tôi luôn khuyên bạn nên tạo riêng quy tắc CSS, chuyển đổi nó bên trong JavaScript
• Định nghĩa một quy tắc CSS được gọi là. hoạt động với một nền tài sản duy nhất. màu đỏ
________số 8• Thêm các. lớp hoạt động cho đối tượng nút hiện được nhấp là e. Mục tiêu
• Gỡ bỏ. lớp tích cực từ prevButton
let prevButton = null;
const wrapper = document.getElementById["wrapper"];
wrapper.addEventListener['click', [e] => {
const isButton = e.target.nodeName === 'BUTTON';
if [!isButton] {
return;
}
e.target.classList.add['active']; // Add .active CSS Class
if[prevButton !== null] {
prevButton.classList.remove['active']; // Remove .active CSS Class
}
prevButton = e.target;
}];
Nó sẽ hoạt động chính xác như trước đây, nhưng lần này chúng tôi có nhiều quyền kiểm soát hơn trong việc tạo kiểu cho trạng thái nút hoạt động theo bất kỳ cách nào chúng tôi muốn bằng cách sử dụng. lớp năng động