Nowadays I'm using something more powerful like jQuery or base2.DOM, but if you don't, these might prove useful.
/*
* Copyright 2004-2006 Toni Corvera <outlyer@outlyer.net>
*
* License: http://www.gnu.org/copyleft/lgpl.html LGPL
*
* Extra DOM-like methods (Note that at the time of writing they can't be
* bound to the Document prototype, so they are global functions)
*
* getFirstChildByTagName(HTMLElement parent, String tagName)
* First child of parent with tag tagName, NOT-RECUSIVE
* getFirstSiblingByTagName(HTMLElement node, String tagName)
* See above
* getChildrenByClassName(Node parent, String className)
* Obtains an array with the children of parent that have
* the class className (supports multi-class elements), NOT-RECURSIVE
* getChildrenByTagName(Node parent, String tagName)
* Obtains an array with the children of parent that have
* the tag tagName, NOT-RECURSIVE
*
* hasClass(HTMLElement element, String className)
* Checks if element has class className, supports multi-class elements
* removeClass(HTMLElement element, String className)
* Remove class className from element's classes if present, supports
* multi-class elements
*/
// boolean hasClass(HTMLElement e, String className)
function hasClass(e, c) {
if (!document.getElementById) return false;
if (!e.className) return false;
return null!=e.className.match(new RegExp('^(w*|.* )'+c+'(w*| .*)$'));
}
// void removeClass(HTMLElement e, String className)
function removeClass(e, c) {
if (!hasClass(e, c)) return;
e.className = e.className.replace(new RegExp(c,'g'),'');
}
// HTMLElement getFirstChildByTagName(HTMLElement parent, String tagName)
function getFirstChildByTagName(e,tag){
if (!document.getElementById) return null;
var f=null;
for (var i=0;i<e.childNodes.length;++i) {
if (e.childNodes[i].tagName == tag) {
f = e.childNodes[i];
break;
}
}
return f;
}
// HTMLElement getFirstSiblingByTagName(HTMLElement node, String tagName)
function getFirstSiblingByTagName(e,t) {
if (!document.getElementById) return null;
var f=null;
if (null==e.nextSibling || e.nextSibling.tagName==t) return e.nextSibling;
return getFirstSiblingByTagName(e.nextSibling,t);
}
// Array getChildrenByClassName(Node parent, String className)
function getChildrenByClassName(n,c) {
if (!document.getElementById) return null;
var a=new Array();
for (var i=0; i<n.childNodes.length; ++i) {
var x=n.childNodes[i]
if(hasClass(x,c)){a.push(x);}
a.concat(getChildrenByClassName(x,c));
}
return a;
}
// Array getChildrenByTagName(Node parent, String tagName)
function getChildrenByTagName(n,t) {
if (!document.getElementById) return null;
var a=new Array();
for(var i=0; i<n.childNodes.length;++i){
var x=n.childNodes[i];
if(x.tagName==t){a.push(x);}
a.concat(getChildrenByTagName(x,t));
}
}
Downloadable file: http://p.outlyer.net/graveyard/net_outlyer_dom_exts.js
Comentario de Walter el 06.04.2010
Que buen ejemplo, Gracias
Comentario de Toni el 06.04.2010
De nada hombre