Подтвердить что ты не робот

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'));

Спасибо

4b9b3361

Ответ 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;
}