古い従来の ASP ページが多数あり、その多くはテーブルにデータベース データを表示しています。どのページにもソート機能が組み込まれていません。元の開発者が使用するのに適していると判断した ORDER BY 句に翻弄されます。
クライアント側の JavaScript を介して並べ替えを行うための簡単な修正に取り組んでいます。ほとんどの場合、必要なことを実行するスクリプトが既に作成されています。ただし、まだ機能を 1 つ追加する必要があります。これらのページの表の行は、行の色が交互に変わることが多く、これを実現するために使用されるメカニズムはページによって異なります。CSS クラスを変更するだけの簡単な場合もあれば、ASP コードによってスタイルがインラインでレンダリングされた場合もあります。
現在、テーブルを並べ替えた後、各行はレンダリングされた配色を保持しているため、交互の行は交互ではなくなりました。私は次のような簡単なものでそれを修正したいと思っていました:
/* "table" is a var for the table element I'm sorting.
I've already verified it exists, and that there are at least three rows.
At this point the first row (index 0) is always the header row.
*/
// check for alternating row styles:
var RowStyle = table.rows[1].style;
var AltStyle = table.rows[2].style;
// SORT HAPPENS HERE!!
// snip
// Apply alternating row styles
if (RowStyle === AltStyle) return true;
for (var i=1,il=table.rows.length;i<il;i+=1)
{
if (i%2==0) table.rows[i].style=RowStyle;
else table.rows[i].style=AltStyle;
}
残念ながら、このように要素のスタイル プロパティを設定することはできません。オブジェクトにセッターがないことを訴えます。他にどうすればこれを簡単に行うことができますか? ここではjQueryのようなフレームワークは許可されていません-それは私の手に負えません。
更新:
最善の解決策ですが、インライン スタイルではなくすべてのクラスを使用するように 100 以上のページをリファクタリングするのは現実的ではありません。また、背景色以外にも関係がある場合があります。たとえば、行が交互の行よりもはるかに暗い場合や明るい場合があり、対応するために 1 つのスタイルの前景色も異なります。または、交互のスタイルでは、境界線が異なる方法で設定される場合があります。これらのすべてのページで何が使用されているのか本当にわからないので、ある行から別の行にすべてのスタイルを一般的に適用するものが必要です。