1

オーバーロードせずに文字列を書き込むループを実行したいdivarrayと呼ばれるグローバルの名前のリストがありますnames。はarray約2500の名前でいっぱいです。div今、私はusingで名前を書きたいですajax。しかし、名前をループしたい場合、スクリプトはちょっとオーバーロードしていて、クライアントのアラートで停止します。これは私のループです:

for(var i = 0; i < names.length; i++){
   document.getElementById('div').innerHTML += names[i] + "<br/>";
}

また、100のような小さなステップでループをインターレースしようとしました(ループが過負荷にならないように思ったため)。window.setTimeout("function(i)",0);また、関数が呼び出されるたびに100をステップ実行する、パラメーターiを使用してlength、配列のに到達するまで試してみましたnames

簡単な方法があることを私は知っています。しかし、私はその方法を見つけることができません.....助けを得ることによって喜ばれるでしょう。

ありがとう

4

2 に答える 2

8

次のようにコーディングできます。

document.getElementById('div').innerHTML = names.join('<br/>');

これにより、内部htmlが単一の命令に設定され、負荷の問題が解決されます。

于 2012-12-18T10:26:20.520 に答える
0

この方法で試してください:

    var content = '';

    for(var i = 0, n_length = names.length; i < n_length; i++) {
        content += names[i] + "<br/>";
    }

    document.getElementById('div').innerHTML += content;   // if the previous content should remain there

ループの中止値を保存する方が高速であることに注意してください。それ以外の場合は、ループの反復ごとにのlengthプロパティを読み取ります(2500x)。array

また、DOM操作は非常に遅いため、可能な限り低いレベルに下げるのが賢明であることに注意してください。コンテンツを個別に作成し、それをDOMに一度だけ書き込むことをお勧めします。

于 2012-12-18T10:32:20.120 に答える