标签: removechild

在不知道父元素的情况下删除dom元素?

是否可以删除除body标签之外没有父元素的dom元素?我知道使用像jquery这样的框架会很容易,但我试图坚持直接的javascript.

这是我发现的代码,否则:

function removeElement(parentDiv, childDiv){
     if (childDiv == parentDiv) {
          alert("The parent div cannot be removed.");
     }
     else if (document.getElementById(childDiv)) {     
          var child = document.getElementById(childDiv);
          var parent = document.getElementById(parentDiv);
          parent.removeChild(child);
     }
     else {
          alert("Child div has already been removed or does not exist.");
          return false;
     }
}   
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript removechild

34
推荐指数
4
解决办法
3万
查看次数

带迭代器的java.util.ConcurrentModificationException

我知道如果试图通过简单的循环从集合中删除循环,我会得到这个异常:java.util.ConcurrentModificationException.但我正在使用Iterator,它仍然会产生这个异常.知道为什么以及如何解决它?

HashSet<TableRecord> tableRecords = new HashSet<>();

...

    for (Iterator<TableRecord> iterator = tableRecords.iterator(); iterator.hasNext(); ) {
        TableRecord record = iterator.next();
        if (record.getDependency() == null) {
            for (Iterator<TableRecord> dependencyIt = tableRecords.iterator(); dependencyIt.hasNext(); ) {
                TableRecord dependency = dependencyIt.next(); //Here is the line which throws this exception
                if (dependency.getDependency() != null && dependency.getDependency().getId().equals(record.getId())) {
                    tableRecords.remove(record);
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

java iterator removechild concurrentmodification

24
推荐指数
1
解决办法
3万
查看次数

为什么我不能删除我刚发现的子元素?NOT_FOUND_ERR

我正在构建一个脚本,它必须修补XML文件,包括用另一个元素替换一个元素列表.以下函数将补丁(包含可能为空的同名元素列表)应用于父元素的同名元素列表(也可能是空列表).(这只是修补逻辑的一小部分).

为什么,当我运行代码时,是否会出现以下错误?

org.w3c.dom.DOMException: NOT_FOUND_ERR: An attempt is made to reference a node in a context where it does not exist.
    at com.sun.org.apache.xerces.internal.dom.ParentNode.internalRemoveChild(ParentNode.java:503)
    at com.sun.org.apache.xerces.internal.dom.ParentNode.removeChild(ParentNode.java:484)
    at CombineSweeps$PTReplaceNodeList.apply(CombineSweeps.java:514)
Run Code Online (Sandbox Code Playgroud)

(第514行标记如下.)据我所知,我刚刚验证了元素是否存在(因为NodeList是实时的,它的第一个条目将始终是下一个匹配或null).有趣的是,这并不总是一个问题.

private static class PTReplaceNodeList extends PTBase {
    private final String name;
    private final String nextElement;
    private final List<Node> childList;

    ...

    int apply(Document document, Node parent, Node node_unused) {
        NodeList nodes;
        // A marker for where to insert our nodes.
        // We make a guess using nextElement (if null, means at end).
        Node refNode …
Run Code Online (Sandbox Code Playgroud)

java xml removechild getelementsbytagname

17
推荐指数
2
解决办法
2万
查看次数

从DOM引用元素仅从元素中删除元素

这要么非常简单,要么不可能.

我知道我可以这样做:

var element = document.getElementById('some_element');
element.parentNode.removeChild(element);
Run Code Online (Sandbox Code Playgroud)

......但感觉很乱.是否有更整洁 - 并且普遍支持 - 的方式来做同样的事情?

似乎 - 至少对我来说 - 就像应该有这样的东西:

document.getElementById('some_element').remove();
Run Code Online (Sandbox Code Playgroud)

......但这不起作用,搜索Google/SO并没有产生任何替代方案.

我知道这并不重要,但parentNode.removeChild()只是感觉hacky/messy/lowfficient/bad practice-y.

javascript removechild

15
推荐指数
2
解决办法
4万
查看次数

javascript删除li而不删除ul?

有没有办法删除ul的li元素而不删除ul?我似乎只能找到这个.

var element = document.getElementById('myList');
element.parentNode.removeChild(element);
Run Code Online (Sandbox Code Playgroud)

但是,这删除了ul.我希望能够动态删除和附加li元素,而不必每次删除li元素时都必须创建元素.只是寻找一种更简单的方法.谢谢你的帮助.

<div id="listView">
  <ul id="myList" class="myList-class">
    <li>item 1</li>
    <li>item 2</li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

javascript html-lists removechild

14
推荐指数
3
解决办法
5万
查看次数

为什么removeChild需要父节点?

回答完这个问题后,我想知道为什么removeChild需要一个父元素.毕竟,我们可以做到

node.parentNode.removeChild(node);
Run Code Online (Sandbox Code Playgroud)

由于父节点应始终可直接用于Javascript/DOM引擎,因此不必提供要删除的节点的父节点.

当然我理解removeChild作为DOM节点方法的原理,但为什么不document.removeNode存在这样的东西(只接受任意节点作为参数)?

编辑:更清楚的是,问题是:为什么JS引擎根本就需要父节点,如果它已经有要删除的(唯一)节点?

javascript dom removechild

13
推荐指数
1
解决办法
3681
查看次数

removeChild真的删除了元素吗?

removeChild函数是否真的完全删除子节点?或者它只是删除指定parant节点的子元素?如果它没有真正删除元素,有没有办法完全删除元素?

html javascript dom removechild

10
推荐指数
2
解决办法
2万
查看次数

创建一个可以自行删除它的元素?

我正在建立一个灯箱作为学校项目,我不能使用jQuery.我有一张图片.当您单击它时,Javascript会生成一个透明的div,ID为"overlay".我希望div删除它自己,或者父级删除它但它不起作用.我认为这与你不能将'onclick'链接到一个尚不存在的元素这一事实有关.

javascript onclick lightbox javascript-events removechild

9
推荐指数
2
解决办法
2万
查看次数

通过parentNode.removeChild删除元素会引发DOM异常8

我的代码大致如下(我删除了一些部分,因为它们无关紧要):

Library.focus = function(event) {
    var element, paragraph;

    element = event.srcElement;

    paragraph = document.createElement("p");
    paragraph.innerText = element.innerText;

    element.parentNode.insertBefore(paragraph, element);        // Line #1
    element.parentNode.removeChild(element);                    // Line #2
};
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,我编号为第2行的最后一个调用抛出了这个:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
Run Code Online (Sandbox Code Playgroud)

请注意,上一行#1工作正常,并在其前插入段落节点.Element是一个现有元素,element.parentNode和element.parentNode.removeChild也存在.

我发现这不合逻辑,因为元素根据定义是其parentNode的子元素.也许StackOverflow能够帮助我,在这里?

javascript dom removechild domexception

8
推荐指数
1
解决办法
8101
查看次数

removeChild():如何删除缩进?

让我们考虑以下XML文档:

<items>
   <item>item1</item>
   <item>item2</item>
</items>
Run Code Online (Sandbox Code Playgroud)

现在,让我们删除所有项目并添加一些新项目.码:

  //-- assume we have Element instance of <items> element: items_parent
  //   and the Document instance: doc

  //-- remove all the items
  NodeList items = items_parent.getElementsByTagName("item");

  for (int i = 0; i < items.getLength(); i++){
     Element curElement = (Element)items.item(i);
     items_parent.removeChild(curElement);
  }

  //-- add a new one
  Element new_item = doc.createElement("item");
  new_item.setTextContent("item3");
  items_parent.appendChild(new_item);
Run Code Online (Sandbox Code Playgroud)

文件的新内容:

<items>


   <item>item3</item>
</items>
Run Code Online (Sandbox Code Playgroud)

这些恼人的空白线出现因为removeChild()除去了小孩,但是留下了被移除的小孩的缩进,并且线断裂.并且此indent_and_like_break被视为文本内容,该内容保留在文档中.

相关问题中,我发布了变通方法:

items_parent.setTextContent("");
Run Code Online (Sandbox Code Playgroud)

它删除了这些空白行.但这是一些黑客攻击,它消除了影响,而不是原因.

所以,问题在于如何消除原因:如何以换行意图移除孩子?

java xml dom removechild

8
推荐指数
1
解决办法
6220
查看次数