javascript - 未找到错误: DOM Exception 8 on insertBefore in event listener

标签 javascript dom

我有以下代码:

HTML:

<div id="tree">
  <ul class="root">
    <li class="add">+</li>
  </ul>
</div>

JavaScript:

window.onload = () => {
  let root = document.getElementsByClassName("root")[0];
  root.addEventListener("click", (e) => {
    if (e.target.classList.contains("add")) addNode(e);
    return false;
  }, false);

  function addNode(e) {
    let item = document.createElement("li");
    item.innerHTML = "new";
    e.target.parentNode.insertBefore(e.target, item);
  }
};

当我单击 li 时,我在 insertBefore 行上收到错误 NotFoundError: DOM Exception 8: An attempts was made to reference a Node in a context where it does notise. 。我已经检查过 DevTools,一切似乎都是正常的节点,我不知道为什么它不起作用。

最佳答案

参数的顺序不正确。新节点必须首先被传递:

e.target.parentNode.insertBefore(item, e.target);

See the MDN documentation .

关于javascript - 未找到错误: DOM Exception 8 on insertBefore in event listener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31293176/

相关文章:

javascript - 通过调整 dropzone.js 压缩图像

javascript - 在 javascript 中跟踪创建的窗口的关闭

javascript - 我如何使用 jQuery 知道 DOM 元素当前是否在屏幕上

javascript - ajax调用后使用onclick函数

javascript - 调用 Promise 链中的两个方法

javascript - 事件与 View 和 AJAX 加载的集合绑定(bind)

javascript - 确定事件冒泡通过的元素

javascript - 当我删除并重新附加表单元素时,如何防止表单输入数据被重置?

javascript - 在 IE6 上看到奇怪的行为 - 我一无所知

javascript - 将表达式分配给变量并在 ng-class 中使用?