with valor obtener hasattribute elemento clase attrs attribute atributo javascript internet-explorer-7

javascript - hasattribute - obtener el valor de un atributo js



getAttribute no puede devolver la clase en IE7? (5)

Necesito encontrar nodos aleatorios según los valores de los atributos aleatorios. Para hacer eso, utilizo getAtrribute en los nodos de getElementsByTagName.

Parece que cuando busco el nombre de clase como atributo, no funciona en IE (funciona en FF).

Alguien sabe si getAtrribute no solo funciona en ''clase'' u otros atributos también? (si es solo clase haré una solución.)


Alguien sabe si getAtrribute no solo funciona en ''clase'' u otros atributos también?

Falla para todos los atributos donde el nombre del atributo HTML difiere del nombre de la propiedad DOM (nombre de clase, htmlFor), más usted tiene que usar el uso de mayúsculas del estilo DOM. También devuelve el tipo de datos incorrecto para los atributos cuyas propiedades DOM no son cadenas:

disabled, readOnly, checked, selected, multiple, compact, declare, isMap, noHref, defer, noResize, size, cols, rows, width, height, hspace, vspace, maxLength, tabIndex, colSpan, rowSpan

y posiblemente otros que me he perdido!

element.getAttribute(x)

en IE es exactamente lo mismo que decir:

element[x]

Por lo tanto, en general, debe evitar el uso de getAttribute y, en su lugar, usar las sencillas interfaces de HTML de nivel DOM 1/2 como ''element.className''.

Esto finalmente se solucionó en IE8.


IE está roto en este sentido. Puede acceder a la clase en IE a través de getAttribute("className") pero, por supuesto, este no es realmente el atributo, por lo que no funciona en! IE.

Eso te deja con una opción de bifurcación para obtener element.className o bifurcación en getAttribute en "className" o "class". No está bien.


Vale la pena probar toda su plataforma multiplataforma de Javascript, si no está utilizando algo como jQuery para eliminar el dolor, pero Class puede ser un caso especial.

Esta debería ser una forma multiplataforma de obtener la clase:

element.className


Puede obtener una lista de todos los atributos de sus elementos y probar su valor de esa manera. Este fragmento maneja los navegadores IE y WebKit, y devolverá el valor de cadena de la clase CSS:

var value = ""; var elements = document.getElementsByTagName("div"); for(var i = 0; i < elements.length; i++){ if(typeof elements[i].attributes[''class''] == "undefined"){ value = elements[i].getAttribute("class"); } else { value = elements[i].attributes[''class''].nodeValue; } alert(value); // careful, this will be a lot of alerts }


Aquí puede obtener y establecer el atributo de clase con compatibilidad de navegador cruzado.

//also works with IE7 and below //get class attribute value var class_name = document.getElementById(''elem_id'').className; //set class attribute document.getElementById(''elem_id'').className = ''new-class-name'';