GetElementsByName() не работает?
У меня есть функция Javascript, которая должна обновлять скрытое поле ввода в моей форме с числом, которое увеличивается каждый раз, когда вызывается функция.
Сначала он работал с getElementById(), потому что мне пришлось перепроектировать мою форму. Я не могу использовать функцию php для назначения отдельного идентификатора элементу, поэтому все, что у меня есть, является уникальным именем для этого элемента.
Поэтому вместо этого я решил использовать getElementsByName() из Javascript для изменения элемента.
Вот HTML этого элемента
<input type="hidden" value="" name="staff_counter">
Это мой код Javascript:
window.onload=function()
{
//function is activated by a form button
var staffbox = document.getElementsByName('staff_counter');
staffbox.value = s;
s++;
}
Я не получаю ошибок в Firebug, когда функция вызывается, и поле ввода не получает значения, предоставленного ему.
Он работал с getElementById(), но почему он внезапно не работает с getElementsByName()?
- - Я проверил, что это единственный уникальный элемент в документе.
- -I проверял на наличие ошибок в Firebug при активации функции
Вот код, который я использую из Codeigniter, чтобы сделать элемент
// staff_counter is name and the set_value function sets the value from what is
//posted so if the validation fails and the page is reloaded the form element does
// not lose its value
echo form_hidden('staff_counter', set_value('staff_counter'));
Спасибо
Ответы
Ответ 1
document.getElementsByName()
возвращает NodeList, поэтому вам нужно получить к нему доступ по индексу: document.getElementsByName('staff_counter')[0]
(в зависимости от того, сколько из них у вас есть).
У вас также есть доступ к свойству length
чтобы проверить, сколько элементов было сопоставлено.
Ответ 2
У меня была аналогичная проблема, я разрешил ее с помощью простого цикла над массивом. В приведенном ниже коде будет отображаться и отключить все кнопки с именем "btnSubmit".
for (var i=0;i<document.getElementsByName('btnSubmit').length;i++){
document.getElementsByName('btnSubmit')[i].disabled=true;
}