我正在尝试在提交表单之前设置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
的值仍为“”。
有什么建议吗?
答案 0 :(得分:4)
getElementsByName
返回一个元素数组,即使只有一个元素也是如此。
您可以做两件事:
更改此:
var input = document.getElementsByName('Ticket');
对此:
var input = document.getElementById('ticket');
或者,如果您想继续使用getElementsByName
,则可以这样访问其值:
var input = document.getElementsByName('Ticket')[0];
答案 1 :(得分:2)
如果您选择使用“ getElementsByName”,请记住它是复数形式(get Elements ByName),因此它将返回一个节点元素的数组列表。因此,这种访问数组元素的方式可以帮助class _ProductManagerState extends State<ProductManager> {
List<String> _products = ['Product 1', 'Product 2'];
@override
Widget build(BuildContext context) {
/*Rest of the code*/
}
}