[Hỏi đáp] Thử thách 10 - Làm việc với ParentNode


#1

Chào mọi người, hiện tại mình đang bị lỗi Undefined, mong mọi người giải đáp giúp mình nhé
2


#2

Câu hỏi này rất thú vị đó @tuantiensiu, Để các bạn cùng vào tranh luận rồi Sang sẽ giải thích lỗi nhé.


#3

Theo Ngân hiểu thì document.body.childElementCount là đếm tất cả các con trực tiếp của body (bao gồm cả <script></script>).
Trong vòng lặp for chắc là i>x.length vì vậy bị báo lỗi này.


#4

Mình thì làm theo cách này:

for (var i = 0; i < document.body.childElementCount; i++) {
var a = document.body.querySelectorAll(‘article’);
var b = a[i];
b = b.innerText;
console.log(b);
}

sau khi xóa b=b.innerText, thì đặt console.log cho b và i, thì i có tới 5 biến, trong khi đó b chỉ có 4, nên ở biến cuối do không tìm thấy nên mới báo lỗi chăng, mình thay: i < document.body.childElementCount bằng i < document.body.childElementCount-1 được không nhỉ.

Nhưng mà vẫn chưa hiểu lắm tại sao trong khi b có 4 biến mà i tới tận 5 biến, mong bạn nào giải đáp hộ.


#5

document.body.childElementCount đếm tất cả element con của body, và script cũng là con của body nên chắc chắn là sẽ đc đếm luôn rồi :slight_smile:


#6

Chắc đây là câu trả lời chính xác rồi :smiley:


#7

@KimNgan em for(var i = 0; i<document.body.querySelectorAll("article").length; i++) thì nó vấn có 1 dòng undefined nè chị


#8

chờ anh @sang.cu vô giải thích thôi :smile:


#9

@KimNgan trả lời chuẩn rồi, @binh.bui tặng Ngân 5đ ngay và luôn Bình nhé :slightly_smiling_face:

Trong câu hỏi của Tiến, phần điều kiện lặp và biến x không có mối liên hệ. E thử thay bằng x.length, thay vì lấy
document.body.ChildElementCount xem.

Điểm thứ 2 A để ý thấy, x và y hoàn toàn độc lập về số lượng phần tử, điều kiện if là kiểm tra y, còn điều kiện y là in ra y. Có gì không ổn thì phải?

Điểm thứ 3, e đặt x và y khó hiểu quá :smiley: , biến nên có tên dễ hiểu nhé e.


#10

Ok anh @sang.cu . Chị @KimNgan đã được tặng 5đ ạ :slight_smile:


#11

oke a @sang.cu , cảm ơn mọi người. Em đã sửa được lỗi đó rùi ạ :smiley:


#12

Đoạn code bài tập 10 thế này có ổn không mọi người nhỉ:
function printText() {
var allH1 = document.body.querySelectorAll(“h1”);
var allP = document.body.querySelectorAll(“p”);
for (i = 0; i < allH1.length; i++) {
console.log(allH1[i].textContent + allP[i].textContent);
}
};
printText();
console.log("\n");

//cách dùng innerText
function printText2() {
var allH1 = document.body.querySelectorAll(“h1”);
var allP = document.body.querySelectorAll(“p”);
for (i = 0; i < allH1.length; i++) {
console.log(allH1[i].innerText + “\n” + allP[i].innerText);
}
};
printText2();


#13

Em thấy thuật toán chưa tốt lắm, vì e giả sử số lượng thẻ h1 và thẻ p không giống nhau thì sẽ bị sai vòng lặp nha a @truongtho_dev


#14

theo mình nghĩ b = 5 là có thêm node script cuối cùng nữa thì phải


#15

Đúng như cách hiểu của bạn Kim Ngân phía trên đó bạn :slight_smile: