我不想使用这个方法,因为如果有多个元素具有相同的id,他们都将被删除,我需要一个方法,只删除被点击的按钮的父元素。因为如果你执行这段代码并点击按钮它会删除所有id为“div-list”的元素但我只想让它只删除点击它的按钮的父元素
let button = document.getElementById('button-submit');
let div = document.getElementById('div-list');
div.appendChild(button);
button.onclick = () => {
div.remove();
}
字符串
我找到了一种方法,但我想要另一种方法,这是唯一的JavaScript这里的方法,但我希望有另一种方法来做到这一点:
<div>
<button onclick="this.parentElement.remove()"></button>
<div>
型
5条答案
按热度按时间bfnvny8b1#
使用ID并不理想。
当你有多个元素,你也想做同样的事情,它通常是更好地使用所谓的委托事件。
它的工作原理是将
click
处理程序添加到父元素.items
上,然后检查目标是否是.remove
之后的元素,然后可以找到此元素的父元素.item
并删除。这种方法的一个好处是,如果您稍后动态添加项,事件也将对它们起作用。另外请注意,在下面的示例中,我使用了
closest
,parentElement
的优点是,如果您稍后更改布局,它将继续工作。下面是一个简单的例子。
个字符
k5ifujac2#
JavaScript中的所有DOM元素都有
.parentElement
属性。这意味着在button.onClick
函数中,你可以简单地说:button.parentElement.remove();
因此只删除父节点。oyjwcjzk3#
事件侦听器接收事件作为第一个参数。该事件具有
currentTarget
属性,该属性指向事件处理程序所附加的元素(在本例中为button
)。对于该元素,可以使用
parentElement
:个字符
注意:你不应该使用
on...
属性来附加事件,而应该使用addEventListener
:的字符串
使用
on...
属性,您只能将特定事件的一个事件处理程序附加到元素,当您意外地覆盖了元素上仍然存在的事件处理程序时,这可能会在较大的代码库中导致难以调试的问题。wfveoks04#
首先,我们来检验一下你的理论
个字符
正如我们所看到的,一个事件被附加到给定
id
的元素中的第一个input
,它的父元素将被删除。这就引出了一个非常重要的问题:重复的id在HTML中是无效的,应尽可能避免
因此,将
button-submit
和div-list
id转换为类并执行以下操作:型
我暂时忽略了将按钮添加到div中,因为您没有提供有关结构的上下文信息。
rqmkfv5c5#
不应该有多个html标签具有相同的id(如here所述)。你可以使用这个:
字符串
如果你想把函数分配给多个按钮,考虑使用类名而不是id。移除的元素仍将仅是单击按钮的父元素。
请注意,有不止一种方法可以实现你想要的,每种方法都有优点和缺点,正如其他现有的答案所示。