Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将新元素添加到对象数组并以HTML显示_Javascript_Html_Css - Fatal编程技术网

Javascript 将新元素添加到对象数组并以HTML显示

Javascript 将新元素添加到对象数组并以HTML显示,javascript,html,css,Javascript,Html,Css,我有一个对象数组,在填写表单和在提交时调用addEventListener时,这些对象将被新对象填充 我试图将新对象推送到事件侦听器中,但看起来它只在函数范围内工作。 是否有其他方法将此新对象添加到数组中 这是我的密码: 常数雇员=[{ 名字:凯文, 阿佩利多:马龙, edad:30, }, { 名字:潘, 阿佩利多:比斯利, edad:69, }, { 名字:吉姆, 阿佩利多:哈尔伯特, edad:40, }, ]; const form=document.querySelectorform

我有一个对象数组,在填写表单和在提交时调用addEventListener时,这些对象将被新对象填充

我试图将新对象推送到事件侦听器中,但看起来它只在函数范围内工作。 是否有其他方法将此新对象添加到数组中

这是我的密码:

常数雇员=[{ 名字:凯文, 阿佩利多:马龙, edad:30, }, { 名字:潘, 阿佩利多:比斯利, edad:69, }, { 名字:吉姆, 阿佩利多:哈尔伯特, edad:40, }, ]; const form=document.querySelectorform; const table=document.querySelector.table; form.addEventListenersubmit,e=>{ e、 防止违约; 让nuevoEmpleado={ nombre:form.name.value, apellido:form.lastname.value, edad:形式、年龄、价值, }; emplbeados.pushNuevoEmplbeado; 表单重置; }; emplbeados.forEachchabon=>{ 让html=` Nombre:${chabon.Nombre}Apellido:${chabon.Apellido}Edad:${chabon.Edad} `; table.innerHTML+=html; }; 形式{ 显示器:flex; 弯曲方向:立柱; } 钮扣{ 宽度:30%; } .桌子{ 显示器:flex; 弯曲方向:立柱; 边框:1px纯紫色; } 名义 阿佩利多 伊达 阿格雷戈
实际上,您当前的函数正在将新对象nuevoEmpleado推送到数组中,您只是没有看到它,因为在推送新对象之后,您没有更新DOM/HTML,甚至没有记录数组

因此,创建一个函数,将Emplbeados打印到表中。在初始化时以及每次添加新empleado时调用此函数

请参阅下面的代码以及其中的注释

常数雇员=[{ 名字:凯文, 阿佩利多:马龙, edad:30, }, { 名字:潘, 阿佩利多:比斯利, edad:69, }, { 名字:吉姆, 阿佩利多:哈尔伯特, edad:40, }, ]; const form=document.querySelectorform; const table=document.querySelector.table; form.addEventListenersubmit,e=>{ e、 防止违约; 让nuevoEmpleado={ nombre:form.name.value, apellido:form.lastname.value, edad:形式、年龄、价值, }; emplbeados.pushNuevoEmplbeado; 表单重置; //重新打印empleados,调用执行该操作的函数 打印模板; }; //此处:将Emplbeados打印到表中的新函数 printemplados=函数{ //再次填充之前,请清除表格HTML table.innerHTML=; emplbeados.forEachchabon=>{ 让html=` Nombre:${chabon.Nombre}Apellido:${chabon.Apellido}Edad:${chabon.Edad} `; table.innerHTML+=html; }; } //启动时调用以开始显示 打印模板; 形式{ 显示器:flex; 弯曲方向:立柱; } 钮扣{ 宽度:30%; } .桌子{ 显示器:flex; 弯曲方向:立柱; 边框:1px纯紫色; } 名义 阿佩利多 伊达 阿格雷戈
您的问题不是阵列中没有更新,因为它显然可以工作

只需添加console.logempleados;就在empleados.pushnuevoEmpleado之后


您的问题是在HTML中看不到任何更新。这是因为在那之后您不更新表。

为什么要调用empleados.pushnuevoEmpleado;在创建对象之前?对不起,我忘了删除那部分代码,现在可以了