无法设置表单的隐藏域

Can not set hidden field of form

我试图在提交之前在表单中设置类型为 hiddeninput,但我不明白为什么它没有设置我的字段:

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.log(input.value); //has the desired value
      //looking with the debugger in my form at the target input, the value is still default
    }

}

当我在 console.log 行中设置调试器时,input 变量是 set.But 它不会反映在 form 中。 当我滚动表单时,input 的值仍然是“”。

有什么建议吗?

getElementsByName returns 一组元素,即使只有一个元素。

你可以做两件事:

改变这个:

var input = document.getElementsByName('Ticket');

对此:

var input = document.getElementById('ticket');

或者如果您想继续使用 getElementsByName,您可以像这样访问它的值:

var input = document.getElementsByName('Ticket')[0];

如果您选择使用 "getElementsByName",请记住它是复数形式(getElementsByName),因此它会 return 我们一个数组列表节点元素。所以这种访问数组元素的方式可以帮助var input = document.getElementsByName('Ticket')[0];