jueves, agosto 16, 2007

Cómo utilizar getElementsByClass()

Al principio me pareció una función muy útil, pero no fue hasta el momento en que decidí utilizarla que me di cuenta que sería productivo mostrar cómo y no simplemente nombrarla como una función de gran utilidad.

Esta función no pertenece precisamente al grupo de funciones predefinidas de Javascript, razón por la cual, al googlear esta función nos aparecerán muchas versiones de ésta, ya que muchos desarrolladores han encontrado en ella una gran utilidad, y al no encontrarse dentro del grupo de funciones prestablecidas, todos escriben su propia versión.


En esta ocasión, les presento la versión de Dustin Diaz:



function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp('(^\\s)'+searchClass+'(\\s$)');
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}

Ahora bien, cómo utilizarla?


El primer parámetro, el nombre de la clase, debe proporcionarse como cadena. Los otros parámetros son opcionales, pero se han de proporcionar para limitar la búsqueda en el D.O.M.

He aquí un ejemplo de más o menos cómo implementar el código:

var myEls = getElementsByClass('myClass');
for ( i=0;i<myEls.length;i++ ) {
// do stuff here with myEls[i]
}




Fuentes consultadas:

+ http://www.dustindiaz.com/...
+ http://www.snook.ca/.../your_favourite_1/

No hay comentarios.: