我想在提交之前在表单中设置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.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
变量被设置。但它没有反映在form
中。当我滚动表格时,input
的值仍为“”。
有什么建议么 ?
getElementsByName
返回一个元素数组,即使只有一个元素。
你可以做两件事:
改变这个:
var input = document.getElementsByName('Ticket');
对此:
var input = document.getElementById('ticket');
或者如果你想继续使用getElementsByName
,你可以像这样访问它的值:
var input = document.getElementsByName('Ticket')[0];
如果您选择使用“getElementsByName”,请记住它是复数(getElementsByName),因此它将返回一个节点元素的数组列表。所以这种访问数组元素的方式可以帮助var input = document.getElementsByName('Ticket')[0];