Thử thách 22 - cài đặt sự kiện


#1

tại sao cái hàm xacdinhtarget không cần truyền đối số evt vào mà vẫn chạy được ạ. đây là mã nguồn ạ.


#2

Hi @trongson, khi e truyền hàm vào như cú pháp:

container.addEventListener("click", xacdinhtarget);

Khi trình duyệt xử lý sự kiện, nó sẽ gọi hàm e truyền vào và đưa tham số vào trong hàm của e khai báo. Do đó, ở hàm

function xacdinhtarget(evt)

E thấy là mình có 1 đối số evt, sẽ có giá trị được truyền vào bởi trình duyệt.

Đây có phải là ý e hỏi không?


#3

vg. vậy là đối số evt sẽ do trình duyệt tự truyền vào ạ. VD: có 2 hàm như ở trên thì đối số evt sẽ được truyền vào là đối tượng container đúng không ạ


#4

a chưa hiểu ý “2 hàm” của e là đoạn mã nào? E có thể đưa đoạn mã vào đây được không?

@trongson


#5

đầu tiên e có hàm
function xacdinhtarget(evt){
//code
}
sau đó e bắt sự kiện trên đối tượng container bằng hàm
container.addEventListener(“click”, xacdinhtarget);
vậy đối số evt của hàm xacdinhtarget() sẽ được trình duyệt tự truyền vào là đối tượng container phải không ạ


#6

@trongson Trình duyệt sẽ truyền vào biến dạng Event chứ không phải container e nhé.

Nếu e xem IDL của Event thì nó có thuộc tính target. Đây chính là nơi để e kiểm tra target có phải là container của e hay không.


#7

Theo mình thì trongson cứ console.log(evt) và console.log(target) (với var target = evt.target;) bên trong hàm xacdinhtarget(evt), em sẽ hiểu ngay vấn đề em hỏi nè!..)