0

ここに課題があります。jquery/Javascriptを使用して500行を超えるテーブルを反復処理(+要素のプロパティを変更しながら)するにはどうすればよいですか? 追加の課題は、ブラウザーが IE8 であることです。

テーブルで for ループと $.each を使用してみました...動作はしましたが、いまいましい IE の速度が低下し、スクリプト エラー (エラー: このスクリプトを続行しますか? コンピューターの速度が低下する可能性があります。 。かくかくしかじか)。

問題は、個々の列のプロパティを反復して変更する方法を知ることではなく、このプロセスを最適化する方法を知ることです。

どんな助けでも大歓迎です。

4

2 に答える 2

2

一般に、タイム クリティカルなタスクを実行している場合は、jQuery を使用しないでください。すべて$('.classname')が少なくとも 20 の jQuery 行を実行し、特に IE8 の場合、ドキュメントを反復処理する大量のネイティブも実行されます。

IE8 で実行されるスクリプト行には制限があります。デフォルトでは、100 万行が実行され、ユーザーはスクリプトを続行するかどうかを尋ねられます。この制限はレジストリによって制御されますが、Web アプリの場合、もちろん値を増やすことは役に立ちません。

IE8 では、レンダリング速度も問題になります。

  • 一般的に最小限のスタイリングを使用する
  • innerHTML/の設定を避け、 代わりにand /or and and/ or をinnerText使用してください。createElement()createTextNode()appendChild()insertBefore()
  • インライン スタイルを避けるか、代わりにクラス名を変更するか、代わりに直接 CSS ルール操作を使用します。
  • を使用するときは、可能な限り要素をキャッシュしgetElementsBy/Tag/Class/Name()ます。
  • 可能な限りキャッシュtable.rowstable.rows[n].cellsコレクションを使用してください。
  • 一度に表の一部のみを表示することを検討してください。レンダリングが高速になります。
于 2013-08-16T11:12:59.690 に答える
1

これを試しましたか

var table = document.getElementById("mytab1");
for (var i = 0, row; row = table.rows[i]; i++) {
   //iterate through rows
   //rows would be accessed using the "row" variable assigned in the for loop
   for (var j = 0, col; col = row.cells[j]; j++) {
     //iterate through columns
     //columns would be accessed using the "col" variable assigned in the for loop
   }  
}
于 2013-08-16T10:39:35.097 に答える