Могу ли я использовать 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);