2012-05-02 4 views
1

私は次のコードJavascriptをHTMLDOMのappendChild結果8

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 

で私に次のエラーを与えているのはなぜこの出来事ですか..?

答えて

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でなければならないことも正しいですが、それはあなたがいることを行使していなかったとして、あなたが見ていた実際のエラーに付随ですコードパス]

+0

oMG ...それは私の間違いです...私は結果を保存していませんでした.Oops –

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; 
} 
+0

ok ..しかし私はDOMエレメントであるaddElmにとしてdocument.getElementById( 'myExistingElmId')を渡しています...そうですか? –

+1

@JinuJDはい、しかし、あなたは 'document.createElement'の結果を同時に失いました。 –

+0

omg ...私はそれを気付かなかった...本当に私の間違い –

関連する問題