2014-09-24 3 views
0

У меня есть этот вход: <input type="text" name="1">.Добавить id для ввода

Использование vanilla JS, как я могу присвоить ему идентификатор? Чтобы это выглядело так: <input type="text" name="1" id="2">.

Имейте это до сих пор, не работает, и я не могу понять, почему ...

var xyz = document.getElementsByName(1"); 
xyz.setAttribute("id", "2"); 
+0

Вы пропускаете "до 1 – DNACode

ответ

1

getElementsByName возвращает массив. Вы должны установить атрибут для одного элемента. Hack: xyz[0].setAttribute...

+0

Спасибо всем !! Работает! Уфу .. – Malasorte

+3

Почему хак? – putvande

+0

Использование жёстко прописанные значение является плохой идеей. Что делать, если страница имеет много элементов с таким же именем? – VeroLom

1

Как сказал VeroLom,

getElementsByName возвращает массив.

Таким образом, вы должны возвращать только один элемент:

var xyz = document.getElementsByName(1")[0]; // there, I pick the first element of the array 
xyz.setAttribute("id", "2"); 
0
var xyz = document.getElementsByName(1"); 
xyz.setAttribute("id", "2"); 

Это дает массив элементов по имени "1". Поэтому вам нужно пройти и передать идентификатор каждому элементу.

Итак, если вы уверены, что у вас есть только один элемент с этим именем вы можете сделать

var xyz = document.getElementsByName("1")[0]; 
xyz.setAttribute("id", "2"); 
+0

отсутствует '' 'at' .. (1 ") [0];' –

1

Они функционируют .getElementsByName(1) возвращает массив объектов HTML DOM с именем 1.

Чтобы получить доступ к первому элементу попробовать это:

xyz = document.getElementsByName("1")[0]; 
xyz.setAttribute("id", "2"); 

и, кстати, идентификаторы должны начинаться с буквой.

Смежные вопросы