Элементы DOM бывают разного типа – элемент, текст, CDATA, комментарий. Каждый из этих элементов содержит определенное значение в параметре nodeType:
Node.ELEMENT_NODE = 1 Node.TEXT_NODE = 3 Node.CDATA_SECTION_NODE = 4 Node.COMMENT_NODE = 8
Для того, чтобы выделить группу элементов нужного нам типа, например комментариев, можно использовать следующую функцию:
HTMLElement.prototype.getNodesByType =
function getTextNodes(nodeType) {
// Просматриваем все дочерние элементы
// объекта this
var a = [];
var l = this.childNodes.length;
for(var i=0; i < l; i++) {
// если элемент нужного нам типа, добавляем его в
// массив результатов
if (this.childNodes[i].nodeType == nodeType)
a.push(this.childNodes[i]);
// Делаем рекурсию только при Node.ELEMENT_NODE (1)
if (this.childNodes[i].nodeType == 1)
a = a.concat(this.childNodes[i].getNodesByType(nodeType));
}
return a;
};
В этой функции производится рекурсивный проход по всем дочерним элементам и выбираются те из них, значение nodeType которого равняется заданному значению.
