Tôi cảm thấy đây phải là một vấn đề dễ dàng, nhưng than ôi tôi thấy mình bị mắc kẹt. Những gì tôi đang cố gắng làm là thiết lập một cách để mỗi khi bạn nhấp vào một ô trên bảng (hoặc bất kỳ đâu), nó sẽ hiển thị parentNode của mỗi phần tử, về cơ bản đi qua cây DOM. Tôi figured tôi sẽ cần phải sử dụng elem.parentNode, nhưng tôi bị mắc kẹt trên một phần đi qua. Bất kỳ bậc thầy nào ngoài kia có thể giúp tôi, nó sẽ được đánh giá cao.Traversing lên cây DOM để hiển thị thông tin về parentNode
Trả lời
var element; //your clicked element
while(element.parentNode) {
//display, log or do what you want with element
element = element.parentNode;
}
var tables = document.getElementsByTagName('table');
for (var i=0,len=tables.length;i<len;++i){
tables[i].onclick = function(evt){
if (!evt) evt = window.event;
var element = evt.target || evt.srcElement;
while (element){
console.log(element);
element = element.parentNode;
}
};
}
Nếu bạn thực sự muốn nhấp vào bất kỳ yếu tố ở khắp mọi nơi, sau đó chỉ cần:
document.body.onclick = function(evt){
if (!evt) evt = window.event;
var element = evt.target || evt.srcElement;
while (element){
console.log(element);
element = element.parentNode;
}
};
tôi nghĩ đến ngày hôm nay rằng các tính chất sự kiện như 'currentTarget' và 'là target' không có sẵn trong IE . Dường như họ chỉ có người anh em họ trong IE, giống như với nhiều tài sản khác. Cảm ơn vì sự thấu hiểu. –
+1 và công việc tốt khi đạt 10k – qwertymk
'getElementsByTagName' trả về một đối tượng không phải là một mảng vì vậy sẽ cần sử dụng' Array.prototype.method.call' hoặc [tạo mảng giả] (http://stackoverflow.com/ câu hỏi/4513162/document-getelementsbytagname-return-value) để lặp lại nó một cách chính xác. – rxgx
- 1. NerdTree - Hiển thị tập tin trong cây
- 2. Traversing một cây nhị phân đệ quy
- 3. Sự khác nhau giữa DOM parentNode và parentElement
- 4. Sự kiện hiển thị JQuery/Javascript/DOM
- 5. cURL: Cách hiển thị thông tin tiến trình trong khi tải lên?
- 6. DDMS và os hiển thị thông tin bộ nhớ khác nhau về ứng dụng của tôi
- 7. Chỉ tải phần hiển thị của DOM và loại bỏ phần tử DOM không hiển thị trong chế độ xem
- 8. Không thể tải tệp lên; hiển thị phương thức tải lên tập tin CP Home
- 9. Hiển thị thông tin dựa trên nút bấm được nhấn
- 10. Làm thế nào để hiển thị thông báo lỗi trong cổng thông tin liferay?
- 11. Cố gắng lấy Gói Phiên bản Thông tin để hiển thị trong thông báo "Giới thiệu"
- 12. Hiển thị cây trên trang JSP
- 13. Sự khác nhau giữa offsetParent và parentElement hoặc parentNode
- 14. Thao tác DOM trong khi hiển thị SVG lớn
- 15. Làm cách nào để hiển thị thông báo bật lên cho người dùng bằng jquery?
- 16. Thông báo Không hiển thị
- 17. VS có thể hiển thị thêm tài liệu C# XML trong cửa sổ bật lên Thông tin nhanh Intelliisense
- 18. UIButton setAttributedTitle: forState: Không hiển thị lên
- 19. có cách nào tốt để hiển thị quá nhiều thông tin trong ASP.NET không?
- 20. Làm thế nào để ngăn chặn Jetty hiển thị thông tin liên quan đến bối cảnh
- 21. Tôi cần thêm thông tin về HandleError
- 22. Nhận thông tin bật lên với WebBrowser
- 23. Phân tích cú pháp cây và thông tin ngữ pháp
- 24. Javascript DOM, nhận văn bản nút mà không làm mất thông tin khoảng cách
- 25. Hiển thị thông báo thông tin trong jsp cho Spring WebFlow 2.0
- 26. Rất nhiều DOM. Ẩn vs hiển thị không có
- 27. Cách hiển thị thông báo bật lên như trong Ngăn xếp ngăn xếp
- 28. mẹ vs parentNode
- 29. cách ẩn/hiển thị phần tử dom trong google closure
- 30. Haskell: Hiển thị hơi say lên?
Cảm ơn sự giúp đỡ. Tuy nhiên, câu hỏi nhanh, tại sao lại sử dụng element.parentNode thay vì phần tử? – NinjaCode
Mỗi phần tử trong DOM có 'parentNode' - không bao gồm nút gốc, là' Document'. Vì vậy, bạn lặp qua phần tử càng lâu, vì phần tử có một 'parentNode'. Trong phần tử 'while' bạn gán các phần tử hiện tại' parentNode' vào biến phần tử, vì vậy nó có thể chạy và bật cho đến khi nó đạt đến 'Tài liệu' không có' parentNode'. – singles