Я пытаюсь установить input типа hidden в форме перед ее отправкой, и я не понимаю, почему это не устанавливает мое поле:
HTML
<form id = "createForm" method = "post" action = "[myhost]/[myaddress]/[mypath]" enctype = "multipart/form-data" >
<input type = "hidden" id = "ticket" name = "Ticket" />
</form>
<input id = "setterInput" type = "text"/>
<button onclick = "methods.setHidden()"></button>
JS
window.methods = {
setHidden: function () {
var form = document.getElementById('createForm');
var setter=document.getElementById('setter');
var input = document.getElementsByName('Ticket');
input.value = setter.value;
console.info(input.value); //has the desired value
//looking with the debugger in my form at the target input, the value is still default
}
}
Когда я устанавливаю отладчик в строке console.info, устанавливается переменная input. Но это не отражается в form.
Когда я прокручиваю форму, значение input по-прежнему равно «».
Какие-либо предложения ?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


getElementsByName возвращает массив элементов, даже если есть только один элемент.
Вы можете сделать две вещи:
Измените это:
var input = document.getElementsByName('Ticket');
к этому:
var input = document.getElementById('ticket');
Или, если вы хотите продолжать использовать getElementsByName, вы можете получить доступ к его значению следующим образом:
var input = document.getElementsByName('Ticket')[0];
Если вы решите использовать «getElementsByName», помните, что это множественное число (getЭлементыByName), и поэтому он вернет нам список элементов узла. Так что этот способ доступа к элементу массива может помочь var input = document.getElementsByName('Ticket')[0];
Он сделал свое дело, перейдя от доступа к нему на
id, а не наname, хотя даже в начальном случае объект не былnull.