带有.push和forEach的简单JavaScript应用程序

带有.push和forEach的简单JavaScript应用程序,javascript,foreach,Javascript,Foreach,问题就在这里,我试图使用forEach而不是for循环来创建一个note应用程序并打印到DOM,但我遇到的问题是我的代码在数组中附加了一个子元素,它变得一团糟,我正在寻找不同的方法来实现它,但今晚放弃了 给你 常量注释=[]; myArraya函数{ a=document.getElementByIdtxt.value 注释:pusha; notes.foreach功能项{ 设p=document.createElementp; document.body.appendChildp p、 in

问题就在这里,我试图使用forEach而不是for循环来创建一个note应用程序并打印到DOM,但我遇到的问题是我的代码在数组中附加了一个子元素,它变得一团糟,我正在寻找不同的方法来实现它,但今晚放弃了

给你

常量注释=[]; myArraya函数{ a=document.getElementByIdtxt.value 注释:pusha; notes.foreach功能项{ 设p=document.createElementp; document.body.appendChildp p、 innerHTML+=项目; } } 笔记
您不需要在数组中推送项,然后迭代它来创建注释。在这种情况下,每次添加后,您必须删除以前的元素,否则将导致重复相同的注释。您可以首先将元素附加到dom中,然后将其添加到数组中以供将来引用

常量注释=[]; myArraya函数{ a=document.getElementByIdtxt.value; const p=document.createElementp; const txtNode=document.createTextNodea; p、 appendChildtxtNode; document.body.appendChildp 注释:pusha; } 笔记
下面是一个可能的解决方案,使用note onclick可从html和数组中删除,并按enter键单击“添加”:

var注释=[]; 函数addNote{ var id=新的Date.valueOf.toString; var text=document.getElementByIdnoteInput.value; notes.push{id:id,text:text}; 显示注释; } 函数显示注释{ var div=document.getElementByIdnotesDiv; div.innerHTML=; notes.forEachnote=>{ var p=document.createElementp; p、 id=note.id; p、 text内容=note.text; p、 setAttributeonclick,removeNote\+note.id+\; 附录P部分; }; } 功能removeNoteid{ document.getElementByIdid.remove; var指数=-1;
forvar i=0;i所有的混乱意味着什么?由于每次添加到notes数组,列表就会变长,因此您添加1项,它输出1项,添加另一项,然后添加第一项和第二项,以及第三项,您将第一项和第三项添加到DOM中使用另一个容器,您可以在执行循环之前清空它。或者只添加每个容器创建时请注意,而不是执行循环。您正在从button onclick无参数调用myArray。另一方面,您的函数myArray正在排除一个参数,该参数会立即被忽略。我认为您只需要从函数声明中删除参数a。我会将ps附加到元素、div和cle中每次清除它,或者只追加输入的最后/最新值。如果要从数组中删除项,请使用每次清除方法。我将调用函数addInput。。。