【发布时间】:2018-11-02 19:36:13
【问题描述】:
我有一个按钮,按下时会执行类似的操作
function click(){
element = document.getElementById("element");
element.parentNode.removeChild(element);
var newelement = document.createElement("div");
body.appendChild(newelement);
newelement.id = "element";
}
我也尝试过使用element.outerHTML = "" 而不是removeChild,但没有成功。在添加关于删除前一个 id 为“element”的元素之前,第一次单击时一切正常,一个名为“element”的 div 被附加到正文中。 (当然,在第二次单击时,附加了另一个名为“element”的元素,我想保持一个元素的唯一 ID。)现在,关于删除以前的元素,我的 button.onClick 甚至都没有任何东西。
另一个重要的上下文:我正在尝试对使用用户输入生成的元素执行此操作,因此无法保证制作了多少这些东西——我只是希望在用户想要生成时删除它们更多。
在第一次点击时,我试图删除一个空元素。这会破坏什么吗?
【问题讨论】:
-
控制台有错误吗?
getElementById函数是否找到了该元素?你看到它在你的 DOM 检查器中被删除了吗? -
所以检查它是否存在,但我确信控制台会告诉你问题是什么......
-
如果有多个这样的元素,可能应该使用一个类作为选择器。 Id 对于页面上的单个元素应该是唯一的。当您删除该元素时,任何对它的绑定或引用也可能会丢失。
-
@Tank,这是个好主意,谢谢。所以我的控制台说以 null 的 parentNode 为目标是行不通的。我想我可以在那里抛出一个 if 语句来处理没有这些元素在起作用的情况?我想我希望有一个更强大的解决方案,如果有的话......另外,是的,我在发布后进行了调试,因为我把我的编译器和我的调试器混淆了(我是新的,哈哈)。
-
我用你所拥有的东西创建了一个 jsfiddle。它将 div 替换为新的。这是预期的行为吗? jsfiddle.net/woppyLov
标签: javascript html