【问题标题】:Best possible way to remove html elements that are in an js array? [duplicate]删除 js 数组中的 html 元素的最佳方法? [复制]
【发布时间】:2013-10-23 09:11:13
【问题描述】:

我需要的是一个 JS 函数 deleteSelected() 这将从我的 HTML 页面中删除 selectedDivs 数组中的元素。最有效的方法是什么?

删除所选 HTML:

<div class="DRAGGABLE ui-draggable" onclick="addDevice(this)" style="position: absolute; width: 240px; height: 41px; top: 126px; left: 27px;">
  <img id="PMF00" src="/devices/AIRC1-010.gif">
</div>

JS:

function addDevice(e) {
  if ($ctrlBeingpressed == true) {
    selectedDivs.push(e);
    e.style.border = "2px dotted black";
  }
}

显然已经有一个帖子:/

【问题讨论】:

  • 为了清楚起见,您是否问过我们如何从 DOM 中删除节点,或者您已添加到简单 JS 数组中的 DOM 元素?因为大多数答案都是针对第一个的。
  • 不是从数组中删除,而是从页面中删除。

标签: javascript html


【解决方案1】:

如果您的 selectedDivs 数组包含实际的 DOM 元素,您可以执行以下操作:

function deleteSelected() {
   for (var i = 0; i < selectedDivs.length; i++) {
      var el = selectedDivs[i];
      el.parentNode.removeChild(el);
   }
   selectedDivs = [];
}

【讨论】:

  • onclick="addDevice(this)" 会提供 DOM 元素吗?
  • 很奇怪,这只有第一次有效,之后它给出了; TypeError: el.parentNode 为空
  • @Firebirdz 这是因为元素仍在数组中,但不在 DOM 中。方法完成后,您需要清除您的selectedDivs。编辑答案。
  • 你是我的英雄 Artyom Neustroev!
【解决方案2】:

你需要使用removeChild方法

for (var i = 0, len = selectedDivs.length; i< len; i++){
  var node = selectedDivs[i];
  node.parentNode.removeChild(node);
}

【讨论】:

    猜你喜欢
    • 2019-09-01
    • 2011-11-10
    • 2010-09-26
    • 2010-12-01
    • 1970-01-01
    • 2016-01-02
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多