1

我写了以下代码

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

为什么会这样。。?

4

2 回答 2

3

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;
}
于 2012-05-02T06:17:00.867 回答
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,但这是您看到的实际错误的附带问题,因为您没有执行该代码路径]

于 2012-05-02T06:17:09.423 回答