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

documentDOM要素ではありません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 に答える