Могу ли я использовать JavaScript для установки атрибута "name"?

по данным SitePoint (и мои собственные эксперименты), реализация IE "setAttribute ()" является ошибочной и ненадежной.

и по SitePoint, the name атрибут доступен только для чтения.

есть ли другой способ установить name атрибуты элемента? Мне нужно это для использования с переключателями. Если возможно, я хотел бы получить решение без jQuery, поскольку в настоящее время я не использую библиотеку.

спасибо вперед!

6 ответов


Sitepoint вретговорит о другом использовании "имени" (см. комментарий Энтони). Это не только для чтения, просто есть давняя ошибка IE (до v7), где настройка " имя " на полях формы только частично эффективна. Переключатели, в частности, не принимают его должным образом.

решение, одобренное Microsoft,как описано здесь это использовать ужасную неправильность версии IE вызова createElement для установки атрибутов в то же время время:

var radio= document.createElement('<input type="radio" name="test" value="a" />');

вероятно, лучшим способом было бы просто использовать старый добрый innerHTML, например.:

var div= document.createElement('div');
div.innerHTML= '<input type="radio" name="test" value="a" />';
var radio= div.firstChild;

это сработало для меня

alert(document.getElementById('testInput').name);
document.getElementById('testInput').name = 'someName';
alert(document.getElementById('testInput').name);

С

<input type="radio" name="test" id="testInput" />

вы пытались просто назначить новое имя элементам name собственность? Я не уверен, как кросс-браузер, но он должен работать с чем-либо, поддерживающим уровень DOM 1.

Я не уверен, почему вы используете setAttribute для выполнения этого?


свойство name не читается только для входных элементов.

посмотреть спец.


смотрим совместимость с W3C DOM-Core вы можете попробовать использовать setAttributeNode () вместо setAttribute (). Он может работать на IE 6 и выше.


IE DOM не позволяет мне изменять атрибут name во время выполнения. Однако использование jQuery для обновления атрибут name работает в IE. Я тестировал на IE9. Например,

<input id="ID0E2B" name="Field2" value="3" type="radio" />
$("#ID0E2B").attr("name", newName);