因为做的项目中,需要实现这样一个功能,在html页面中的表格行,要求可以由用户来自行调整上下的顺序。不知道现有的技术能否实现这样功能,有待研究一下。在这之前已经知道并应用过,可以通过脚本来动态创建表格,但仅用了其中很简单的功能而已。昨天上班时特意下载了一份中文的微软DHTML参考手册,今天晚上正好来仔细研究一下其中的table对象。首先研究了如何实现所需要的功能,查看tr对象的方法,发现最后有一个swapNode的方法,看了这个方法的详细说明(是英文的,看来这本手册也没有完全翻译成中文,还好也能看懂),交换html文档中的两个对象。那只要把两个tr对象交换一下不就可以实现我所需要的功能了,原来如此简单。另一个问题是,我需要知道当前操作的行(tr)在表格中是第几行,当然可以自己定义参数传递,但比较麻烦,一旦行交换后,这个行对象(tr)所对应的参数也要变化,写程序不是很方便。再看tr的属性,有一个叫rowIndex的属性,可以取得当前行位于表格中的第几行,正是所需要的。根据以上的两个方法,很快就实现了所需要的功能。具体看例子:
<SCRIPT type=text/javascript>
function goup(tr) {
var cur = tr.rowIndex;
if (cur>0) {
oTable.rows(cur).swapNode(oTable.rows(cur-1));
}
}
function godown(tr) {
var cur = tr.rowIndex;
if (cur<oTable.rows.length-1) {
oTable.rows(cur).swapNode(oTable.rows(cur+1));
}
}
function save() {
for(i=0;i<oTable.rows.length;i++) {
alert(oTable.rows[i].id);
}
}
</SCRIPT>
<P align=center><INPUT onclick=save() type=button value=保存></P>
<TABLE id=oTable align=center border=1>
<TBODY>
<TR id=tr1>
<TD>1</TD>
<TD><INPUT onclick=goup(tr1) type=button value=up></TD>
<TD><INPUT onclick=godown(tr1) type=button value=down></TD></TR>
<TR id=tr2>
<TD>2</TD>
<TD><INPUT onclick=goup(tr2) type=button value=up></TD>
<TD><INPUT onclick=godown(tr2) type=button value=down></TD></TR>
<TR id=tr3>
<TD>3</TD>
<TD><INPUT onclick=goup(tr3) type=button value=up></TD>
<TD><INPUT onclick=godown(tr3) type=button value=down></TD></TR>
<TR id=tr4>
<TD>4</TD>
<TD><INPUT onclick=goup(tr4) type=button value=up></TD>
<TD><INPUT onclick=godown(tr4) type=button value=down></TD></TR></TBODY></TABLE>
问题解决了,再来看看table中有什么好用的东西,有新的发现再报告。
1.table的RULES属性:可以设置表格的分隔线是否显示 all:显示所有表格线 cols:显示内部竖线和外框 rows:显示内部横线和外框 none:只显示外框,所有内部线都不显示 groups:显示外框,内部横线在THEAD,TBODY,TFOOT对象之间显示,竖线在所有的colGroup对象之间显示。
不设置该属性时,如果定义了表格(table)的border属性,则显示所有的表格线,如果没有定义border属性,则全部不显示,包括外框。
2.frame属性,类似于RULES,也是用来设置表格的边框是否显示 3.moveRow方法:table中还有一个moveRow的方法,也可以用来实现行的交换 4.关于绑定数据的研究:table的dataSrc属性可以给表格绑定一个数据源,表格中显示该数据源的内容,然后可以调用table的firstPage,lastPage,nextPage,previousPage等方法方便快速的实现翻页,可以用dataPageSize来指定每页显示的记录数。只初步的了解这些,日后在仔细研究关于绑定数据源的做法。