установить / получить динамически настраиваемый атрибут - PullRequest
11 голосов
/ 29 августа 2011

Основные современные браузеры поддерживают установку / извлечение пользовательских атрибутов динамически, за исключением семейства IE. Как я могу установить / получить свой пользовательский атрибут во всех браузерах?

Это то, что я пробовал до сих пор:

HTML:

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

JS:

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

или

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

В обоих случаях IE alert() возвращает null.

Ответы [ 2 ]

17 голосов
/ 29 августа 2011

Я проверял ваш код на IE7 / 8

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

и работает нормально. Вам не подходит этот простой контрольный пример или вы действительно делаете что-то другое?

Вы можете использовать скобочные обозначения

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

Если у вас не было - в названии, вы можете использовать точечную запись

var myInput = document.getElementById('myInput');
myInput.customAttr = 'custom-value';
alert(myInput.customAttr);
3 голосов
/ 29 августа 2011

Ваш код отлично работает на IE6, IE7, IE8, FF, Chrome, Opera.

...