GetElementsByAttribute()

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.

Artículos recientes

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.