我有一堆旧的经典 ASP 页面,其中许多在表中显示数据库数据。这些页面都没有内置任何排序功能:您将受到原始开发人员认为适合使用的任何 ORDER BY 子句的支配。
我正在快速修复通过客户端javascript进行排序的方法。我已经编写了一个脚本,它主要可以满足我的需要。但是,我仍然需要添加一点功能。这些页面中的表格行通常具有交替的行颜色,并且用于实现此目的的机制因页面而异。它可能像更改 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 多个页面重构为所有使用类而不是内联样式是不切实际的。此外,有时涉及的不仅仅是背景颜色。例如,一行可能比交替行更暗或更亮,其中一种样式也具有不同的前景色以适应。或者交替的样式可能会以不同的方式设置边框。我真的不知道所有这些页面上使用了什么,所以我需要一些可以将所有样式从一行应用到另一行的东西。