【问题标题】:Javascript HTMLDOM appendChild results in DOM exception 8Javascript HTMLDOM appendChild 导致 DOM 异常 8
【发布时间】:2012-05-11 14:57:22
【问题描述】:

我写了以下代码

function byId(id) {
  return document.getElementById(id);
}
function addElm(root,elm) {
  document.createElement(elm);
  if(!root) {
      root = document;
  }
  root.appendChild(elm);
  return elm;
}
document.addEventListener('DOMContentLoaded',function() {
  var elm = byId('myExistingElmId');
  addElm(elm,'span');
},false);

ID 为“myExistingElmId”的元素在我的文档中。 线

root.appendChild(elm);

在控制台中给我以下错误

Uncaught error: NOT_FOUND_ERR: DOM Exception 8

为什么会发生这种情况..?

【问题讨论】:

    标签: javascript exception appendchild dom


    【解决方案1】:

    document 不是 DOM 元素,document.body 是。正如@Alnitak 所说,您丢失了document.createElement 的结果。这段代码应该可以工作:

    function addElm(root,elm) {
        var elm = document.createElement(elm);
        if(!root) {
            root = document.body;
        }
        root.appendChild(elm);
        return elm;
    }
    

    【讨论】:

    • 好的..但是我将 document.getElementById('myExistingElmId') 作为 传递给 addElm 这是一个 DOM 元素...对吗?
    • @JinuJD 是的,但是你同时丢失了document.createElement 的结果。
    【解决方案2】:

    您的 addElm 函数错误 - 您正在丢弃 document.createElement 的结果。

    应该是:

    function addElm(root, type) {
      var elm = document.createElement(type);
      if(!root) {
          root = document.body;
      }
      root.appendChild(elm);
      return elm;
    }
    

    http://jsfiddle.net/alnitak/wAuvJ/

    [@Ethan 应该是 document.body 也是正确的,但这是您看到的实际错误的附带问题,因为您没有执行该代码路径]

    【讨论】:

    • oMG...这是我的错误...我没有保存结果..糟糕
    猜你喜欢
    • 2014-02-24
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多