2013-03-03 12 views
20

次のスタイルのコードを書くのは混乱します。私は実用効率的な文書にHTMLタグを挿入する方法を知りたいです。javascript document.createElementまたはHTMLタグ

Javascriptを:

document.getElementById('demoId').innerHTML='<div>hello world and <a>click me</a> also</div>'; 

OR

var itd=document.createElement('div'), 
    ita=document.createElement('a'), 
    idt=document.createTextNode('hello world'); 
    iat=document.createTextNode('click me'); 
    idn=document.createTextNode('also'); 

    ita.appendChild(iat); 
    itd.appendChild(idt); 
    itd.appendChild(ita); 
    itd.appendChild(idn) 

    docuemtn.getElementById('demoId').appendChild(itd); 

最速かつ最高の方法ですか?

+0

なぜこのようなhtmlタグを作成したいですか? – Supplement

+0

これを測定するためにChromeでJavaスクリプトプロファイリングを行うことができます – user1428716

+4

誰もが私は狂っていると言いますが、このサイトを作成して維持しなければならない場合は、オプション1を使用し、可能な限り長く。また、オプション2がオプション1より速いとは想像できません。 –

答えて

21

それぞれが何をしているのかを考えてみてください。最初の文字列を解析し、解析された文字列の出力に基づいてdocument.createElement,document.appendChildなど(または同様のメソッド)を呼び出しています。 2つめは、ブラウザー上の作業負荷を軽減することです。

See a comparison on jsPerf

jsPerf オプション1によればオプション2よりも約3倍遅いです。

保守性オプション1の話題は書いてもはるかに簡単ですが、古き良き私に電話をかけてください。オプション2を使うほうが安全だと感じています。

編集

いくつかの結果がでてくる開始した後、異なる結果が私の好奇心をそそりました。私はインストールされた各ブラウザでテストを2回実行しました。ここではすべてのテスト(操作/秒、より高い方が良い)後のjsPerfからの結果のスクリーンショットがあります。

jsPerf results

ので、ブラウザでは、彼らは2つの手法を処理する方法が大きく異なるように見えます。平均的にオプション2は、ChromeとSafariの大きなギャップがあるため、選択肢2のほうが速いと思われます。私の結論は、あなたの組織の基準に最も適しているか、どちらがより効率的かを心配する必要はありません。

この練習が私を教えた主なものは、私はそれについて聞いたことが素晴らしいものにもかかわらず、IE10を使用しないことです。

+1

これは、そのサイトについて学ぶ価値があったと思います。 –

+0

それはかなり素晴らしいです:)私はそれを2度目に使用しました。 –

+3

私はこれが本当だったのかどうか分かりませんでした。この記事をチェックしてください、それは非常に啓発です:http://stackoverflow.com/questions/2305654/innerhtml-vs-appendchildtxtnode –

関連する問題