<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<SCRIPT LANGUAGE="JavaScript">
<!--
var Main_Tab = null;//定义全局变量Main_Tab,使之指向固定表“ExTable”。以后可以使用表对象。
var dragColStart = 0;//初始化拖拽起始表列与结束表列
var dragColEnd = 0;
function ini()
{
Main_Tab = ExTable; //指向固定表
}
function Changeit(table,sor,tag) //交换表中的两列,需要遍历每一行,然后交换每一个元素。因为没有表列对象。
{//sor tag 为列的索引
for (var i=0;i<table.rows.length;i++)
table.rows[i].cells[sor].swapNode(table.rows[i].cells[tag]);
}
function movespan(obj)//obj为触发拖动事件的源“td”对象
{
var nx=event.x,ny=event.y;//当鼠标在表头中点下时的事件的坐标
setspan();
function setspan()
//动态的显示一个拖动中的表“td”对象
{
domospan.style.display="";
domospan.innerText=obj.innerText;//Caption为被拖动对象的Caption
//offsetWidth是表头文字的宽度,offsetHeight是表头文字的高度
domospan.style.left=nx-domospan.offsetWidth/2;
domospan.style.top=ny-domospan.offsetHeight/2;
//domospan.style.left,top是被移动的文字的左坐标和顶坐标
}
function Main_Tab.onmousemove()
//定义一个只在触发拖动事件后方才运行的OnMouseMove事件
{//当拖动文字时定文字框的位置offsetWidth、offsetHeigh始终是文字的宽度,t这是一个定植
domospan.style.left=event.x-domospan.offsetWidth/2;
domospan.style.top=event.y-domospan.offsetHeight/2;
}
function get_Element(the_ele,the_tag)//利用此函数,可以避免出现错误。当拖动目标移到表外是,将忽略错误。
{//the_ele是元素对象,the_tag是标签名
the_tag = the_tag.toLowerCase();
//开始触发
if(the_ele.tagName.toLowerCase()==the_tag)return the_ele;
//释放鼠标后
while(the_ele=the_ele.offsetParent)
//the_ele.offsetParent是定义the_ele的left top坐标的容器对象的引用,是td
{
if(the_ele.tagName.toLowerCase()==the_tag)return the_ele;
}
return(null);
}
function Main_Tab.onmouseup()
{
var the_start = get_Element(obj,"td");
if (the_start!=null)
{
dragColStart= the_start.cellIndex;//td.cellIndex
//cellIndex ---the position of the object in the cells collection of a row
} else
{
return(null);
}
domospan.style.display="none";
//elementFromPoint的坐标是客户坐标,pixel,一般是从相应evenet 后得到的元素对象
var the_end = get_Element(document.elementFromPoint(event.x,event.y),"td");
if (the_end != null )
{
dragColEnd = the_end.cellIndex;
} else
{
return(null);
}
Changeit(Main_Tab,dragColStart,dragColEnd);
//Changeit(Main_Tab,1,2);
}
}
//-->
</SCRIPT>
</head>
<body οnlοad=ini()>
整列移动试验
<table border=1 id="ExTable">
<tr>
<td οnmοusedοwn="movespan(this)" id="td1">语言名称</td>
<td οnmοusedοwn="movespan(this)" id="td2">掌握程度</td>
<td οnmοusedοwn="movespan(this)" id="td3">版本号</td>
<td id="domospan" class="ab" style="position:absolute;background:#f00000;filter:alpha(opacity=50);display:none"></td>
</tr>
<tr>
<td>Delphi</td>
<td>熟练</td>
<td>6.0</td>
</tr>
<tr>
<td>VC</td>
<td>熟练</td>
<td>6.0</td>
</tr>
<tr>
<td>VB</td>
<td>了解</td>
<td>6.0</td>
</tr>
<tr>
<td>C#</td>
<td>了解</td>
<td>DotnetFramWork</td>
</tr>
<tr>
<td>PB</td>
<td>不懂</td>
<td>7.0</td>
</tr>
<tr>
<td>ASP</td>
<td>了解</td>
<td>无</td>
</tr>
<tr>
<td>JavaScript</td>
<td>了解</td>
<td>无</td>
</tr>
<tr>
<td>QT</td>
<td>了解</td>
<td>无</td>
</tr>
<tr>
<td>Kylix</td>
<td>了解</td>
<td>3.0</td>
</tr>
<tr>
<td>SQL</td>
<td>了解</td>
<td>7.0</td>
</tr>
</table>
</body>
</html>
掌握程度 | 版本号 | 语言名称 | 掌握程度 |
熟练 | 6.0 | Delphi | |
熟练 | 6.0 | VC | |
了解 | 6.0 | VB | |
了解 | DotnetFramWork | C# | |
不懂 | 7.0 | PB | |
了解 | 无 | ASP | |
了解 | 无 | JavaScript | |
了解 | 无 | QT | |
了解 | 3.0 | Kylix | |
了解 | 7.0 | SQL |
版本号 | 掌握程度 | 语言名称 | 掌握程度 |
6.0 | 熟练 | Delphi | |
6.0 | 熟练 | VC | |
6.0 | 了解 | VB | |
DotnetFramWork | 了解 | C# | |
7.0 | 不懂 | PB | |
无 | 了解 | ASP | |
无 | 了解 | JavaScript | |
无 | 了解 | QT | |
3.0 | 了解 | Kylix | |
7.0 | 了解 | SQL |