Cần giúp đỡ về lastChild DOM

Tình hình là em mới học lập trình và đang học Javascript trên Coursera.Bài tập cuối khóa yêu cầu làm một game html co code như này
var numberOfFaces = 5;
var theLeftSide = document.getElementById(“leftSide”);
var theRightSide = document.getElementById(“rightSide”);
var theBody = document.getElementsByTagName(“body”)[0];

	function generateFaces() {
		
		for (var i = 0; i < numberOfFaces; i++) {
			
			var imgTop = Math.floor((Math.random() * 400) + 1)+"px";
			var imgLeft = Math.floor((Math.random() * 400) + 1) +"px";
			
			var img = document.createElement("img");
			img.src = "http://home.cse.ust.hk/~rossiter/mooc/matching_game/smile.png";
			img.style.top = imgTop;
			img.style.left = imgLeft;
			theLeftSide.appendChild(img);
		}

		var leftSideImage = theLeftSide.cloneNode(true);
		leftSideImage.removeChild(leftSideImage.lastChild);
		leftSideImage.style.background = "#4DCE93";

		theRightSide.appendChild(leftSideImage);
	}
	generateFaces();
	
theLeftSide.lastChild.onclick = function nextLevel(event) {
			event.stopPropagation();
			generateFaces();
	}

.Yêu cầu của bài là cứ khi click vào cái img lastChild của LeftSide thì nó sẽ appendChild 5 cái img cũng trong LeftSide.Nhưng em làm thi cái event onclick chỉ đúng với cái lastChild đầu tiên,còn sau khi đã append thêm các child thì theLeftSide .lastChild vẫn là cái lastChild đầu tiên(vẫn là cái thứ 5 đầu tiên).Anh chị em cho em hỏi là làm sao đề trỏ vào được cái lastChild cuối cùng khi mà số element đã được tăng lên( ví dụ là cái thứ 10,15…).Em xin cảm ơn.

Cái theLeftSide.lastChild là element cố định, nó luôn là cái thứ 5.
Muốn luôn có last child thì sau mỗi lần generate bạn phải chọn lại last-child.
Để làm điều này bạn cho cái onclick vào hàm generate luôn, mỗi lần generate nó lại có lastChild mới.
Nhưng sẽ xảy ra vấn đề là lastChild cũ vẫn còn onclick, ấn vào vẫn generate, lúc này bạn remove onclick ở cái cũ đi là được.

Để làm những cái này bạn cần biết addEventListener và removeEventListener.
Không rõ trong quá trình học giáo viên có nói không chứ trong js thuần onClick họ k khuyến khích viết như bạn đâu.

1 Like

Thank anh.Anh cho em hỏi chỗ thiếu xót trong cách viết code của em được không ạ.Em tự học không qua trường lớp bài bản nên em không biết cách viết chuyên nghiệp
Mà anh cho em hỏi là nếu lastaChild đã là cố định thì mỗi lần generate là mình phải removeEvenListener luôn đúng không anh?
Em cảm ơn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?