Javascript 使用FormData将窗体转换为对象数组

Javascript 使用FormData将窗体转换为对象数组,javascript,html,form-data,Javascript,Html,Form Data,我正在开发一个用户可以添加或删除朋友信息的表单。 我当前的代码如下所示: (()=>{ 设currentCount=0; const theForm=document.querySelector(“theForm”); 文件 .querySelector(“添加更多字段”) .addEventListener(“单击”,(事件)=>{ event.preventDefault(); //查找并克隆模板内容 const template=form.getElementsByTagName(“模板

我正在开发一个用户可以添加或删除朋友信息的表单。
我当前的代码如下所示:

(()=>{
设currentCount=0;
const theForm=document.querySelector(“theForm”);
文件
.querySelector(“添加更多字段”)
.addEventListener(“单击”,(事件)=>{
event.preventDefault();
//查找并克隆模板内容
const template=form.getElementsByTagName(“模板”)[0];
const clone=template.content.cloneNode(true);
const submitButton=document.querySelector(“submitForm”);
//如果submitButton是隐藏的,则显示它
if(submitButton.offsetParent==null){
submitButton.removeAttribute(“样式”);
}
//在输入字段中添加要设置的类和名称
clone.querySelector(“.set”).classList.add(`set-${currentCount}`);
克隆
.querySelector(“名字”)
.setAttribute(“name”,firstName[${currentCount}]`);
克隆
.querySelector(“中间名称”)
.setAttribute(“名称”`middleName[${currentCount}]`);
克隆
.querySelector(“姓氏”)
.setAttribute(“name”,lastName[${currentCount}]`);
clone.querySelectorAll(“.checkbox”).forEach(函数(项){
setAttribute(“name”,复选框[${currentCount}]`);
});
clone.querySelectorAll(“.radio”).forEach(函数(项){
item.setAttribute(“name”,`radio[${currentCount}]`);
});
//移除按钮
克隆
.querySelector(“.removeSet”)
.setAttribute(“id”,remove-${currentCount}`);
克隆
.querySelector(“.removeSet”)
.setAttribute(“数据编号”,currentCount);
追加(克隆)形式;
//将事件侦听器添加到removeSet按钮
文件
.querySelector(`remove-${currentCount}`)
.addEventListener(“单击”,(事件)=>{
event.preventDefault();
const setName=`.set-${event.target.getAttribute(“数据编号”)}`;
document.querySelector(setName.remove();
});
currentCount++;
});
addEventListener格式(“提交”,(事件)=>{
event.preventDefault();
const theFormData=新表单数据(theForm);
/*
我们需要将表格的格式设置为:
```
[
{
“名字”:“x”,
“中间名”:“x”,
“姓氏”:“x”,
“复选框”:[“复选框a”、“复选框c”],
“收音机”:“收音机b”,
“文本区域”:“一些文本”
},
{
“名字”:“y”,
“中间名”:“y”,
“姓氏”:“y”,
“复选框”:[“复选框a”、“复选框c”],
“收音机”:“收音机b”,
“文本区域”:“一些文本”
},
...
]
```
*/
});
})();
.set{
保证金:5px;
填充物:5px;
外形:1px实心#ccc;
}
.removeSet{
浮动:对;
}

去除



复选框a 复选框b 复选框c
a电台 b台 收音机c
附加说明 添加 提交
这就是我解决问题的方法。看看这个答案这个答案能回答你的问题吗?只要你不需要支持旧IE,你就可以使用。谢谢大家的评论。我知道如何向BE发送数据。我的问题是按照BE的要求格式化表单