Hủy ràng buộc hàm ẩn danh trong JavaScript
Bây giờ giả sử các đoạn văn của chúng ta được ràng buộc với một hàm ẩn danh:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
Giả sử chúng ta muốn hủy ràng buộc hàm này khỏi đoạn văn sau khi nhấp chuột vào đoạn văn đó. Tuy nhiên, chúng ta sẽ gặp phải vấn đề: hàm không có tên, có nghĩa là chúng ta không thể tham chiếu đến nó bằng tên đó để hủy ràng buộc.
Để giải quyết vấn đề, cần đặt tên cho hàm, biến nó thành biểu thức hàm có tên. Hãy thực hiện điều này:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // đã đặt tên cho hàm
console.log(this.textContent);
});
}
Bây giờ hàm này có thể được hủy ràng buộc bên trong chính nó:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // hủy ràng buộc hàm
});
}
Cho danh sách ul, trong mỗi mục của danh sách
có ghi một số. Hãy làm sao để khi
nhấp chuột vào bất kỳ li nào thì số của nó tăng lên
một đơn vị.
Sửa đổi bài toán trước đó sao cho,
mỗi li chỉ tăng giá trị của nó
lần đầu tiên khi nhấn vào nó.
Sửa đổi bài toán trước đó sao cho,
mỗi li chỉ tăng giá trị của nó nếu giá trị của nó
nhỏ hơn 10.