这是相当高的水平,我正在寻找头脑风暴的想法,我宁愿不要用我编写的令人困惑的代码来轰炸您(我将在最后发表要点)。高级:食谱网站,编写添加食谱表单,在仍使用POST
HTML表单的同时添加动态数量的食谱步骤和配料。
我有一个表单,而不是创建REST API和发送JS数组,而是使用vanila JavaScript动态添加<input>
元素。我做的很好,修改了某些元素的.innerHTML
属性,我在用一些自定义“ poor man's JS”
.innerHTML
。美好时光。感觉像1337 h4x0r。突然,当我单击一个按钮时,没有添加元素,而当我单击另一个按钮时,也没有删除其他元素-这个按钮应该删除配料,而另一个按钮则是在特定步骤中删除。自然,我开始调试并检查出了什么问题:
我要删除的元素在那里,它们已连接到DOM。父元素(我document.querySelect
一次并保存到全局变量中,仍然存在(稍后会详细介绍)。我检查了父元素,并相应地更改了HTML
(在HTMLElement
变量内部),但是我仍然看着浏览器,但令我沮丧的是,这些更改无法让它们出现在我眼前。
[经过几个小时的缓慢而激烈的调试之后,我发现了线索,《约柜》 ...父元素(我在谈论的那个,其他人也遭受了同样的命运),它们没有与DOM连接。从字面上看,元素的isConnected
值为false
。
我正在修改.innerHTML
属性,但是元素在LateX中突然不在DOM中!!我不知道该怎么尝试了。
如果您要观察有史以来唯一的唯一代码,这是要点。基本上,我想我必须研究Chromium中的错误或其他东西,因为我的代码总是很完美的:)https://gist.github.com/JakubKoralewski/a45ee04c1e2657214987a49001b66db0
这是相当高的水平,我正在寻找头脑风暴的想法,我宁愿不要用我编写的令人困惑的代码来轰炸您(我将在最后发表要点)。高级:食谱网站,写一个...
此问题的答案在于您停止修改元素的.innerHTML
属性,该元素是您要存储引用的元素的父级,因为它会导致DOM被重新解析,并且所有引用都将丢失为结果。
有关详细信息,请在Mike Christensen的答案中寻求指导:https://stackoverflow.com/a/11515395/10854888