Skip to content

Instantly share code, notes, and snippets.

@englishextra
Last active May 5, 2016 13:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save englishextra/d4789c5d30f6f6b429fdf7aaebeda7b1 to your computer and use it in GitHub Desktop.
Save englishextra/d4789c5d30f6f6b429fdf7aaebeda7b1 to your computer and use it in GitHub Desktop.
get children of a parent element by tag names
/*!
* get children of a parent element by tag nameS
* gist.github.com/englishextra/d4789c5d30f6f6b429fdf7aaebeda7b1
* based on quirksmode.org/dom/getElementsByTagNames.html
* takes two arguments:
* A string with a comma-separated list of tag names.
* An optional start element, otherwise document is used.
* var element = document.getElementById('test');
* var formFieldList = getElementsByTagNames('input,select,textarea',element);
*/
function getChildrenByTags(list, obj) {
if (!obj) {
var obj = document;
}
var tagNames = list.split(",");
var resultArray = new Array();
for (var i = 0; i < tagNames.length; i++) {
var tags = obj.getElementsByTagName(tagNames[i]);
for (var j = 0; j < tags.length; j++) {
resultArray.push(tags[j]);
}
}
var testNode = resultArray[0];
if (!testNode) {
return [];
}
if (testNode.sourceIndex) {
resultArray.sort(function (a, b) {
return a.sourceIndex - b.sourceIndex;
});
} else if (testNode.compareDocumentPosition) {
resultArray.sort(function (a, b) {
return 3 - (a.compareDocumentPosition(b) & 6);
});
}
return resultArray;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment