如何在Javascript中复制包含数组的表单元素?
我想将如何在Javascript中复制包含数组的表单元素?,javascript,arrays,forms,Javascript,Arrays,Forms,我想将数组类型元素从一个表单复制到另一个表单。我无法解决的问题是将数组值分配给新元素 在javascript中,这非常有效: document.getElementById(“newName”).value=document.getElementById(“name”).value; 但这并不是: document.getElementsByName(“newName[]”)。value=document.getElementsByName(“name[]”)。value; 我能得到的最接近
数组类型元素从一个表单复制到另一个表单。我无法解决的问题是将数组值分配给新元素
在javascript中,这非常有效:
document.getElementById(“newName”).value=document.getElementById(“name”).value;
但这并不是:
document.getElementsByName(“newName[]”)。value=document.getElementsByName(“name[]”)。value;
我能得到的最接近的结果是:
var names = document.getElementsByName('name[]'); // names is a Nodelist
var array_name = [];
var i;
for (i = 0; i < names.length; i++) {
array_name.push(names[i].value);
}
document.getElementById("newName").value = array_name;
输出:
<form id="destination">
<input type="hidden" id="newName" name="newName[]" value="">
</form>
更新:
我找到了一个解决办法:
虽然$(表单)
仅允许您访问当前表单,$('form')
将允许您访问所有表单。无需将数据从一个表单复制到另一个表单。如下使用:
let names = document.getElementsById('name').value;
document.getElementById("newName").value = names.split(', ');
这将为值字段分配一个名称数组
虽然我不确定这是否可能。我猜表单数组在后台保存为CSV列表,因此以下代码是正确的:
document.getElementById("newName").value = document.getElementsById('name').value;
您始终可以将结果转换为您想要的结果-看起来它是一个包含1个大字符串的数组,因此:
var result = document.getElementById("newName").value;
result = result[0].split(",");
console.log(result);
如果您认为结果中会出现逗号,则可以使用不同的分隔符:
var names = document.getElementsByName('name[]'); // names is a Nodelist
var array_name = [];
var i;
for (i = 0; i < names.length; i++) {
array_name.push(names[i].value);
...
}
array_name.join("__");
document.getElementById("newName").value = array_name;
var result = document.getElementById("newName").value;
result = result[0].split("__");
console.log(result)
...
var name=document.getElementsByName('name[]);//names是一个节点列表
var数组_name=[];
var i;
对于(i=0;i
如果结果包含逗号,则拆分失败。这是一个很好的解决方法。我仍然希望tI能找到一个更简单的解决方案,类似于简单的字符串值。谢谢。同样的问题-如果名称包含逗号,则逻辑将失败。这就是为什么您用逗号将其拆分为以下部分:names.split(',)
var names = document.getElementsByName('name[]'); // names is a Nodelist
var array_name = [];
var i;
for (i = 0; i < names.length; i++) {
array_name.push(names[i].value);
...
}
array_name.join("__");
document.getElementById("newName").value = array_name;
var result = document.getElementById("newName").value;
result = result[0].split("__");
console.log(result)
...