Tôi đã tìm thấy chính mình bằng JavaScript và tôi đã chạy qua các thuộc tính childNodes
và children
. Tôi tự hỏi sự khác biệt giữa chúng là gì. Ngoài ra là một trong những ưu tiên khác?Sự khác nhau giữa trẻ em và mã con trong JavaScript là gì?
Trả lời
.children
là tài sản của Element. Chỉ có Elements có con, và những đứa trẻ này đều là Element.
Tuy nhiên .childNodes
là tài sản của Node. .childNodes
có thể chứa bất kỳ nút nào.
Vì vậy, một ví dụ cụ thể sẽ là
var el = document.createElement("div");
el.textContent = "foo"
el.childNodes.length === 1; // TextNode is a node child
el.children.length === 0; // no Element children
Tất nhiên .children
là DOM4 để hỗ trợ trình duyệt là run rẩy, tuy nhiên nếu bạn sử dụng DOM-shim, các vấn đề trình duyệt chéo của bạn sẽ biến mất!
Hầu hết thời gian bạn muốn sử dụng .children
vì thông thường bạn không muốn lặp lại TextNodes hoặc Nhận xét trong thao tác DOM của mình.
Nếu bạn muốn thao tác với TextNodes, bạn có thể muốn .textContent
thay thế.
Element.children
chỉ trả về phần tử con, trong khi Node.childNodes
trả về tất cả các nút con. Lưu ý rằng các phần tử là các nút, vì vậy cả hai đều có sẵn trên các phần tử.
Tôi tin rằng childNodes
đáng tin cậy hơn. Ví dụ, MDC (liên kết ở trên) lưu ý rằng IE chỉ có children
ngay trong IE 9. childNodes
cung cấp ít chỗ cho lỗi của trình cài đặt trình duyệt.
Darn, nếu chỉ điều này làm việc trên IE 6-8, nó sẽ là một giấc mơ trở thành sự thật. – Ryan
@minitech nó hoạt động (đối với một số giá trị công việc). Rõ ràng '.children' không lọc ra các nút bình luận, nhưng nó lọc ra các nút văn bản. – Raynos
@Raynos: Chính xác - giống với '.getElementsByTagName ('*')'. IE đôi khi có thể gây phiền nhiễu ... – Ryan
- 1. Sự khác nhau giữa hai mã javascript là gì?
- 2. Sự khác nhau giữa JavaScript và Java là gì?
- 3. Sự khác nhau giữa JavaScript và JScript là gì?
- 4. Sự khác nhau giữa "||" là gì và "hoặc" trong Perl?
- 5. Sự khác nhau giữa trừu tượng và ảo là gì?
- 6. Sự khác nhau giữa bộ chọn jQuery "tổ tiên hậu duệ" và "mẹ> trẻ em"
- 7. Sự khác nhau giữa EM Dash # 151; và # 8212 ;?
- 8. Sự khác nhau giữa IDbSet.Add và DbEntityEntry.State = EntityState.Added là gì?
- 9. Sự khác nhau giữa con trỏ float và địa chỉ con trỏ int là gì?
- 10. Sự khác nhau giữa hai mẫu mã này là gì?
- 11. Sự khác nhau giữa app.doScript và $ .evalFile là gì?
- 12. Sự khác nhau giữa [undefined] và [,] là gì?
- 13. Trong Python, sự khác nhau giữa ".append()" và "+ = []" là gì?
- 14. Sự khác nhau giữa == và = trong Prolog là gì?
- 15. Sự khác nhau giữa // và /// trong Visual Studio là gì?
- 16. Sự khác nhau giữa: = và + = trong tạo tệp là gì?
- 17. Sự khác nhau giữa * và. * Trong MATLAB là gì?
- 18. Sự khác nhau giữa $ @ và $ * trong UNIX là gì?
- 19. Sự khác nhau giữa: = và = trong MySQL là gì?
- 20. Sự khác nhau giữa 'eq' và '= ~' trong Perl là gì?
- 21. Sự khác nhau giữa 'và #' trong Lisp là gì?
- 22. Sự khác nhau giữa fill_parent và wrap_content là gì?
- 23. Quy trình kthreadd và trẻ em là gì và nó khác với init và children
- 24. Sự khác nhau giữa mã dài và dài trong mã Android là gì?
- 25. Sự khác nhau giữa Ctrl-C và SIGINT là gì?
- 26. Sự khác nhau giữa VCS và SCM là gì?
- 27. Sự khác nhau giữa querySelector và getElementsByTagName là gì?
- 28. Sự khác nhau giữa init() và window.init() là gì?
- 29. Sự khác nhau giữa "window.location.href" và "window.location.hash" là gì?
- 30. Sự khác nhau giữa cstdlib và stdlib.h là gì?
Vâng, IE có vẻ như có một số vấn đề: http://www.quirksmode.org/dom/w3c_core.html#t71 –
Trẻ em có thể là bất kỳ loại nào, không chỉ các phần tử HTML – david
@david cái gì? "chỉ khớp các phần tử con". trẻ em chỉ có thể là các yếu tố – Raynos