GetElementsByAttribute()

December 30th, 2005 Envía esta entrada a menéame Envía esta entrada a del.ici.ous

No existe un método nativo de javascript que nos permita seleccionar de forma natural una serie de elementos con un atributo arbitrario predeterminado. El método getElementById() nos permite seleccionar un único elemento dado su ‘id’ o getElementsByTagName() nos devuelve un array con todos los elementos que compartan una misma etiqueta. Sin embargo, no existe un método del tipo getElementsByLang() que permita escoger, por ejemplo, todos los elementos con el atributo ‘lang’ igual a ‘es’.

La siguiente función, que resulta de una generalización de la función getElementByClass que podemos encontrar en http://www.dustindiaz.com/getelementsbyclass/, nos permite llenar ese hueco con la ventaja adicional de que podemos utilizar atributos no definidos en la especificación de HTML 4.0 (por qué esto puede ser de algun interés lo dejamos para otro artículo ;-) :

function getElementsByAttribute(atributo,nombre,nodo,etiqueta) {

//Este es el array que va almacenando los resultados
var resultados = new Array();

//Si los argumentos nodo y etiqueta están vacios les damos valores por defecto
if ( nodo == null )
nodo = document;
if ( etiqueta == null )
etiqueta = '*';

var elementos = nodo.getElementsByTagName(etiqueta);
var longitud = elementos.length;

//Construimos la expresión regular que deseamos encontrar
var cadena = new RegExp("(\b)"+nombre+"(\b)");

//Recorremos los elementos que deseamos parsear
for (i = 0, j = 0; i < longitud; i++) {
if ( cadena.test(elementos[i][atributo]) ) {
resultados[j] = elementos[i];
j++;
}
}

//devolvemos el array de resultados
return resultados;
}

Si deseáramos ahora escoger todos los elementos con el atributo lang=”es” sólo necesitamos llamar a getElementsByAttribute(’lang’, ‘es’). En este enlace podéis observar esta función en acción.

Categorí­a: Programación web

Deja tu comentario

Requerido

Requerido, hidden



Tags HTML Permitidos:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Subscribirse a esta entrada via RSS Feed

  Sabías que...
 
Sabías que...

... ya somos más de 1000 millones de internautas.

Hace tan solo 3 años se estimaban en poco más de 600 millones el número de internautas, lo que supone una tasa de incremento anual del 18%.

¿Aún sigue pensando que su empresa puede vivir de espaldas a Internet?

 
 
2mdc.com diseño web     C/ Matias Turrión, 24, 1º, Madrid 28043      Tel: 91 759 00 24       Fax 91 759 15 18     Contacto