2012-04-19 5 views
0

DOMにコンテンツを作成して追加するビデオチュートリアルがあります。私はまだ、これが最善の方法であることを少し納得だJavascriptでコンテンツを作成してDOMに挿入する準備ができていますか?

jQuery('<h2></h2>', {text: 'Hello world', class 'myClass'}).appendTo('article');

jQuery('<h2 class=myClass>Hello world</h2>').appendTo('article');

そうのようなオブジェクトを作成するに比べずさんである:彼はそうのような文字列をwrtingすることを示唆していますこれを行うの。たとえば、ここでDOM作成のやや複雑な例があります: - http://jsperf.com/string-creation-dave JSで要素を作成する方法を提案すると、要素全体の文字列を渡すよりも遅く実行されます。

したがって、JSの読みやすさでオブジェクトを作成する唯一のメリットはありますか? JSでどのように要素を作成しますか? DOMに挿入する文字列を渡すか、JSでオブジェクトを生成してそのようにオブジェクトを構築しますか?

+0

私は専門家ではありませんが、私が聞いたことから、後者の方法を使用する理由の1つは、そこに属していないので、あなたの 'JS 'の' HTML'の量を減らすことです読みやすくするためです。可読性が向上する限り、コード内の改行としてバックスラッシュを使用することができます(例:http://jsfiddle.net/lollero/WYnqx/ – Joonas

答えて

1

もっともきれいな解決策は、createElementメソッドで要素を作成し、その属性を設定して後でdomに挿入することです。

さらに多くの要素がある場合は、完成したツリーに従ってツリー全体をDOMに挿入します。

from MDN

function addElement() 
{ 
    // create a new div element 
    // and give it some content 
    newDiv = document.createElement("div"); 
    newContent = document.createTextNode("Hi there and greetings!"); 
    newDiv.appendChild(newContent); //add the text node to the newly created div. 

    // add the newly created element and it's content into the DOM 
    my_div = document.getElementById("org_div1"); 
    document.body.insertBefore(newDiv, my_div); 
} 

が、そのようなコードを書きたい人、深刻な;)個人的に私はあなたに合ったものは何でも、あなたの最初の例に固執したいです。

+0

)しばらく前から、少なくともChromeでは.innerHTMLよりも優れています。 –

+0

@Christophあなたが「あなたの最初の事例に固執する」と言ったとき、あなたはjsperfテストページの最初のものを意味しますか?私はJSでオブジェクトを構築しています。そして、あなたはこのメソッドがよりきれいで清潔であると思うので、オブジェクト全体を文字列として渡すことによるパフォーマンス上のメリット(jsperfテストの2番目の例のように)はどうですか? –

+0

@DaveHaigh私は間違っている可能性がありますが、あなたが実際の生活の例でそれについて考えるなら、** 1。**あなたはそれに4つの項目を持つボックスを持っています。タスクはテーブルの上に持ち上げることです。 ** 2。**空のボックスがあります。まず、そのボックスの中に4つのアイテムを入れ、それをテーブルの上に持ち上げます。どのシナリオに時間がかかりますか?シナリオ1は、#1の例ではあなたのものに似ており、#2の例では、2のようになります。 (私はjqueryがどのように組み立てられるかについての実際の仕組みについては知らないが、常識的には#1はすでに組み立てられており、#2は組み立てられていないと伝えている) – Joonas

関連する問題