2011-08-29 18 views
8

Los principales navegadores modernos admiten la configuración/recuperación de atributos personalizados dinámicamente, excepto IE-family. ¿Cómo puedo configurar/obtener mi atributo personalizado en todos los navegadores?establecer/obtener dinámicamente atributo personalizado

Esto es lo que he probado hasta ahora:

HTML:

<input id="myInput" type="text" /> 

JS:

var myInput = document.getElementById('myInput'); 
myInput.setAttribute('custom-attr', 'custom-value'); 
alert(myInput.getAttribute('custom-attr')); 

o

var myInput = document.getElementById('myInput'); 
var customAttr = document.createAttribute('custom-attr'); 
customAttr.value = 'custom-value'; 
myInput.setAttributeNode(customAttr); 
alert(myInput.getAttribute('custom-attr')); 

En ambos casos, es decir, los rendimientos alert()null.

+0

Realmente no veo un problema con su primer código cortado. Lo intenté en MSIE 6.0 y 8.0, muestra "valor personalizado" correctamente. –

+0

¿Qué versión de IE? – epascarello

Respuesta

12

He probado el código en Internet Explorer 7/8

var myInput = document.getElementById('myInput'); 
myInput.setAttribute('custom-attr', 'custom-value'); 
alert(myInput.getAttribute('custom-attr')); 

y funciona muy bien. ¿Ese simple caso de prueba falla para usted, o realmente está haciendo algo diferente?

Puede utilizar el soporte notación

var myInput = document.getElementById('myInput'); 
myInput['custom-attr'] = 'custom-value'; 
alert(myInput['custom-attr']); 

Si no tiene la - en el nombre, puede utilizar la notación de punto

var myInput = document.getElementById('myInput'); 
myInput.customAttr = 'custom-value'; 
alert(myInput.customAttr); 
+2

Esos no son realmente atributos; son propiedades. – lonesomeday

+3

Una nota para ayudar a encontrar información adicional en Google: esta característica se llama "propiedades de expansión". –

2

Su código funciona bien en IE6, IE7, IE8 , FF, Chrome, Opera.

Cuestiones relacionadas