问题描述
我想在提交之前设置hidden
在表单中的类型的input
,我不明白为什么它没有设置我的字段:
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
的值仍为“”。
有什么建议 ?
1楼
getElementsByName
返回一个元素数组,即使只有一个元素。
你可以做两件事:
改变这个:
var input = document.getElementsByName('Ticket');
对此:
var input = document.getElementById('ticket');
或者如果你想继续使用getElementsByName
,你可以像这样访问它的值:
var input = document.getElementsByName('Ticket')[0];
2楼
如果您选择使用“getElementsByName”,请记住它是复数(获取Elements ByName),因此它将返回一个节点元素的数组列表。
所以这种访问数组元素的方式可以帮助var input = document.getElementsByName('Ticket')[0];