我有一堆旧的经典ASP页面,其中许多显示表格中的数据库数据。没有一个页面内置任何排序功能:您完全取决于原始开发人员使用的ORDER BY子句。
我正在通过客户端JavaScript快速修复这个问题,以添加排序功能。我已经编写了一个脚本,基本上做到了我所需的功能。然而,我仍然需要添加一点功能。这些页面中的表行通常具有交替的行颜色,用于实现此功能的机制在页面之间有所不同。它可能只是更改CSS类或样式可能已由ASP代码内联呈现。
目前,在对表进行排序后,每行保留其呈现颜色方案,因此交替行不再交替。我希望使用以下简单的方法来解决它:
我正在通过客户端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;
}
很不幸,你不能像这样设置元素的样式属性。它会报错对象没有setter方法。我还有其他简单的方法吗?这里不能使用像jQuery这样的框架 - 这不在我的掌控之中。
更新:
虽然将所有页面都使用类而不是内联样式会是最好的解决方案,但实际上重构100多个页面并不切实际。此外,有时候还需要考虑更多因素,例如一行可能比交替行明显更暗或更亮,一种样式也可能具有不同的前景色以适应。或者交替样式可能设置边框不同。我真的不知道所有这些页面都使用了什么样式,所以我需要一些可以通用地应用一个行的所有样式到另一个行的东西。