C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: javaScriptでのtable操作が遅い


(過去ログ 92 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■54798 / inTopicNo.1)  javaScriptでのtable操作が遅い
  
□投稿者/ 田中ソフィア (14回)-(2010/11/02(Tue) 16:34:45)

分類:[JavaScript] 

■環境
・WindowsXP、WindowsVista、Windows7
・IE6、IE7、IE8

いつもお世話になっております。田中ソフィアと申します。
trがたくさんあるtableを作り、その中で個々のカラムのIdに対して
document.getElementByIdで操作を行った際に途方もない時間が掛かってしまっています。
操作イメージは以下になります。

for(var i = 0; i < rowNum; i++) {
document.getElementById("row_" + i + "_1").innerText = "";
document.getElementById("row_" + i + "_2").innerText = "";



}

JavaScriptでのテーブル操作で何か速度アップする方法がありましたら、
ご教示頂ければ助かります。

なお最大9000個近くのtr * 35個のtdを持つテーブルを作成しております。

恐れ入りますが、よろしくお願いいたします。
引用返信 編集キー/
■54801 / inTopicNo.2)  Re[1]: javaScriptでのtable操作が遅い
□投稿者/ nonstop820 (5回)-(2010/11/02(Tue) 16:52:40)
それは、どうしてもクライアント側で操作しなければならないのでしょうか?
そうでないのでしたらAjaxを使ってサーバー側でテーブルを生成すれば、
少しは早くなるんじゃないかと思うのですが。
引用返信 編集キー/
■54803 / inTopicNo.3)  Re[1]: javaScriptでのtable操作が遅い
□投稿者/ もりお (301回)-(2010/11/02(Tue) 19:17:54)
2010/11/02(Tue) 19:53:50 編集(投稿者)
No54798 (田中ソフィア さん) に返信

> なお最大9000個近くのtr * 35個のtdを持つテーブルを作成しております。

ずいぶん大量ですね。
document.getElementById で取得するのは td オブジェクトでしょうか。
document.getElementById によるオブジェクトの取得と、innerText に伴う
レンダリングに時間がかかるのではないかと妄想します。

table をレンダリングしないようにして table オブジェクトのプロパティ経由で td
を参照してみてはいかがでしょうか。

<table id="table1" style="display:none">
  <tr>
    ...
</table>

<script type="text/javascript">
  function clearTable() {
    var table1 = document.getElementById("table1");
    var rows = table1.rows;
    var rowsLength = rows.length;
    for (var rowIndex = 0; rowIndex < rowsLength; rowIndex++) {
      var row = rows[rowIndex];
      var cells = row.cells;
      var cellsLength = cells.length;
      for (var cellIndex = 0; cellIndex < cellsLength; cellIndex++) {
        var cell = cells[cellIndex];
        cell.innerText = "";
      }
    }
    table1.style.display = "block";
  }
</script>

引用返信 編集キー/
■54818 / inTopicNo.4)  Re[2]: javaScriptでのtable操作が遅い
□投稿者/ 田中ソフィア (15回)-(2010/11/03(Wed) 14:15:00)
No54803 (もりお さん) に返信

ご回答ありがとうございました。
table → row → cellの順に取得することで大分処理速度が早くなりました。

ご教授頂いた方法で実装を行いたいと思います。

No54801 (nonstop820 さん) に返信
もりおさんの方法で処理速度が早くなりましたので、問題解決とさせていただきます。
ご回答ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -