2016-04-19 9 views
0

私は小さな問題があります。私はJSの非同期呼び出しで満たされたHTMLページにテーブルを持っています。何千もの要素があり、明らかにそれらはクラスで満たされており、それらをきれいにすることができます。JavaScriptを使ったDOM解析のブロック

これはそうのように行われます。

for(var i = 0; i < elements.length; i++){ 
    var td = document.createElement("td"); 
    td.className = "all the pretty css"; 

    var button = document.createElement("a"); 
    button.className = "btn so pretty wow"; 
    td.appendChild(button); 

    tableTr.appendChild(td); 
} 

はしかし、これは多くの時間を要し、かつconsole.timeconsole.timeEndを使用することによって、私は、全体のプロセスは、約100msのJSの実行を取ることを決定することができた、手段時間は実際にはDOM解析によってキューに入れられていることを示します。 (私は右だ?)

だから、のような何かを行うにどのような方法があれば、私は思っていた:

Dom.stopParsing(); 

mySuperFunction(); 
anotherFunction(); 
thisTimeAsync(
    function(){ 
     Dom.parse(); 
); 

そしてそうで、効果的に解析時間を短縮!

+0

[JSがすでにDOMの解析と非同期機能の継続を解析することを可能に停止実行](https://jsfiddle.net/Ld81wufg/)ので、私は私が何かわからないと思います尋ねる –

+0

@MikeC私は単純なデモを追加しました...私は、すべてのtableTr(domに存在し、jsオブジェクトではない)がパーサを起動するので、forのすべての繰り返しがパーサをキューに入れると推測しています... –

+1

100msはとても悪くはありません。また、私は文を解析することはできません "DOM解析によってキューに入れられている"。ところで、あなたは文書の断片を使うことを考えましたか? –

答えて

2

使用document fragments

var frag = document.createDocumentFragment(); 

for(var i = 0; i < elements.length; i++){ 
    var td = document.createElement("td"); 
    td.className = "all the pretty css"; 

    var button = document.createElement("a"); 
    button.className = "btn so pretty wow"; 
    td.appendChild(button); 

    frag.appendChild(td); 
} 

tableTr.appendChild(frag); 
+0

私が探していたもの!ありがとう –

+0

パフォーマンスの比較は何ですか? –

+0

私はまだそれをやっていない、私はそれを行い、ここにコメントするよ! –

関連する問題