編程(Programming)是編定程序的中文簡稱,就是讓計算機(jī)代碼解決某個問題,對某個計算體系規(guī)定一定的運(yùn)算方式,使計算體系按照該計算方式運(yùn)行,并最終得到相應(yīng)結(jié)果的過程。為了使計算機(jī)能夠理解(understand)人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機(jī)能夠理解的形式告訴計算機(jī),使得計算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計算體系之間交流的過程就是編程。 【實(shí)例名稱】 JS代碼實(shí)現(xiàn)動態(tài)改變表格的行順序 【實(shí)例描述】 Ajax技術(shù)可以實(shí)現(xiàn)表格的多項(xiàng)特性,如拖動、編輯等,其實(shí)現(xiàn)的本質(zhì)依然是JavaScript技術(shù)。本例將使用JaVaScript實(shí)現(xiàn)表格的行拖動。 【實(shí)例代碼】 <html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>無標(biāo)題頁-本站(www.xue51.com)</title>
<script language="javascript">
var beginMoving=false; //判斷是否移動的標(biāo)識-移動開關(guān)
//鼠標(biāo)按下時的操作
function MouseDownToMove(obj){
obj.style.zIndex=1; //樣式
obj.mouseDownY=event.clientY; //鼠標(biāo)Y坐標(biāo)
obj.mouseDownX=event.clientX; //鼠標(biāo)X坐標(biāo)
beginMoving=true; //開始移動
obj.setCapture(); //捕獲鼠標(biāo)操作
}
//鼠標(biāo)按下并移動時的操作
function MouseMoveToMove(obj){
if(!beginMoving) return false;
//改變目標(biāo)行的X.Y坐標(biāo)
obj.style.top = (event.clientY-obj.mouseDownY);
obj.style.left = (event.clientX-obj.mouseDownX);
}
//鼠標(biāo)抬起時的操作
function MouseUpToMove(obj){
if(!beginMoving) return false;
obj.releaseCapture(); //釋放對鼠標(biāo)的捕獲
obj.style.top=0;
obj.style.left=0;
obj.style.zIndex=0;
beginMoving=false; //關(guān)閉移動開關(guān)
var tempTop=event.clientY-obj.mouseDownY;
var tempRowIndex=(tempTop-tempTop%20)/20;
//根據(jù)行高度獲取行位置索引
if(tempRowIndex+obj.rowIndex <0 )
tempRowIndex=-1;
else tempRowIndex=tempRowIndex+obj.rowIndex;
//實(shí)際的行索引
if(tempRowIndex >= obj.parentElement.rows.length-1)
tempRowIndex = obj.parentElement.rows.length-1;
obj.parentElement.moveRow(obj.rowIndex,tempRowIndex);
//移動行到指定位置
}
</script>
</head>
<body>
<TABLE WIDTH="300" BORDER="1" >
<TR style='height:20;position:relative;'
onmousedown='MouseDownToMove(this)'
onmousemove='MouseMoveToMove(this)'
onmouseup='MouseUpToMove(this);'><TD >第一行</TD>
<TD>第一行</TD><TD>第一行</TD></TR>
<TR style='height:20;position:relative;'
onmousedown='MouseDownToMove(this)'
onmousemove='MouseMoveToMove(this)'
onmouseup='MouseUpToMove(this);'><TD >第二行</TD>
<TD>第二行</TD><TD>第二行</TD></TR>
<TR style='height:20;position:relative;'
onmousedown='MouseDownToMove(this)'
onmousemove='MouseMoveToMove(this)'
onmouseup='MouseUpToMove(this);'><TD >第三行</TD>
<TD>第三行</TD><TD>第三行</TD></TR>
</TABLE>
</body>
</html>
【運(yùn)行效果】 初始運(yùn)行效果 
拖動后的效果 
【難點(diǎn)剖析】 本例的重點(diǎn)是鼠標(biāo)的三個方法:按下、移動和抬起,使用“setCapture”捕獲鼠標(biāo)的操作一直到“releaseCapture”釋放鼠標(biāo)為止。最后根據(jù)行的高度判斷行的位置索引,使用“move”方法移動行到指定位置。 【源碼下載】 如果你不愿復(fù)制代碼及提高代碼準(zhǔn)確性,你可以點(diǎn)擊:動態(tài)改變表格的行順序 進(jìn)行本實(shí)例源碼下載
使用編程語言寫的程序,由于每條指令都對應(yīng)計算機(jī)一個特定的基本動作,所以程序占用內(nèi)存少、執(zhí)行效率高。 |