2012-01-11 44 views
22

Tôi có một số HTMLDivElement và mục tiêu của tôi là tìm một số div được lồng bên dưới mục này.Cách tìm kiếm trẻ em của HTMLDivElement?

Lý tưởng nhất là tôi muốn một cái gì đó như getElementById, nhưng chức năng đó không hoạt động cho HTMLDivElement.

Tôi có cần phải di chuyển ngang biểu đồ theo cách thủ công hay không hoặc có cách nào dễ dàng hơn không?

Trả lời

35

Demo: http://jsfiddle.net/ThinkingStiff/y9K9Y/

Nếu <div> bạn đang tìm kiếm có một lớp, bạn có thể sử dụng getElementsByClassName():

document.getElementById('parentDiv').getElementsByClassName('childDiv')[0]; 

Nếu nó không có một lớp học mà bạn có thể sử dụng getElementsByTagName() :

document.getElementById('parentDiv').getElementsByTagName('div')[0]; 

Và nếu nó có id bạn có thể, tất nhiên, chỉ cần sử dụng getElementById() để tìm thấy nó không cần biết nó là trong DOM:

document.getElementById('childDiv'); 
+0

Đừng mở rộng 'Element.prototype' với rác. Có một phương thức 'getElementsByClassName' hoàn toàn phù hợp với những gì bạn muốn nhưng tốt hơn. – Raynos

+0

@Raynos Tôi nghĩ đó chỉ là cấp tài liệu. Đã chỉnh sửa. – ThinkingStiff

+0

document.getElementById ('parentDiv') .querySelector ('div') – fallinov

4
//For immediate children 

    var children = document.getElementById('id').childNodes; 

    //or for all descendants 

    var children = document.getElementById('id').getElementsByTagName('*'); 
3
var div = ... 
var divChildren = div.getElementsByTagName("div"); 
var divYouWant = [].filter.call(divChildren, function (el) { 
    return matchesSomeCondition(el); 
}); 

Lý tưởng nhất, tôi muốn một cái gì đó giống như getElementById

Và bạn có thể sử dụng getElementById chỉ cần thực hiện document.getElementById(id) và vì id là duy nhất sẽ tìm thấy mục div duy nhất mà bạn muốn.

Bạn cũng có thể sử dụng elem.getElementsByClassName để chọn một hậu duệ của elem bởi lớp

Các vấn đề liên quan