JS实现拖拽

来源:互联网 发布:oracle 数据库用户权限 编辑:程序博客网 时间:2024/05/22 00:11
[html] view plaincopyprint?
  1. ////html的代码说明:  
  2. ////定义了一个table,用于测试js拖拽功能  
  3. <html>  
  4. <head>  
  5. <script type="text/javascript" >  
  6.    
  7. </script>  
  8. </head>  
  9. <body>  
  10. <table width="100px" height="100px"   bgcolor="blue" style='left:120 ;top: 100;position:absolute'>  
  11. <tr><td>1</td></tr>  
  12. <tr><td>2</td></tr>  
  13. <tr><td>3</td></tr>  
  14. </table>  
  15. <table width="100px" height="100px"   bgcolor="yellow"  style='left:280 ;top: 100;position:absolute'>  
  16. <tr><td>1</td></tr>  
  17. <tr><td>dsa<td></tr>  
  18. <tr><td>2</td></tr>  
  19. <tr><td>3</td></tr>  
  20. </table>  
  21. <table width="100px" height="100px" bgcolor="green"  style='left:400 ;top: 100;position:absolute'>  
  22. <tr><td>1</td></tr>  
  23. <tr><td>2</td></tr>  
  24. <tr><td>3</td></tr>  
  25. </table>  
  26. <table width="100px" height="100px"  bgcolor="gray"  style='left:520 ;top: 100;position:absolute'>  
  27. <tr><td>1</td></tr>  
  28. <tr><td>2</td></tr>  
  29. <tr><td>3</td></tr>  
  30. </table>  
  31. <tr>  
  32. <td>  
  33. </tr>  
  34. </table>  

[javascript] view plaincopyprint?
  1. ////js代码说明:  
  2. ////currentMoveObj :全局对象,记录当前拖拽的那个对象  
  3. ////var relLeft;:鼠标按下时的横坐标  
  4. ////var relTop;鼠标按下时的纵坐标  

[javascript] view plaincopyprint?
  1. <script type="text/javascript">  
  2. var currentMoveObj = null;  
  3. var relLeft;  
  4. var relTop;  
  5.    
  6. ////summary  
  7. ////当按下鼠标时,记录当前点击的坐标,记录当前拖拽的对象  
  8. function mouseDown(obj)  
  9. {  
  10. currentMoveObj =obj;  
  11. currentMoveObj.setCapture();  
  12. currentMoveObj.style.position = "absolute";  
  13. relLeft = event.x - currentMoveObj.style.pixelLeft;  
  14. relTop = event.y - currentMoveObj.style.pixelTop;  
  15. }  
  16.  /////当鼠标松开时,当前拖拽对象置空  
  17. window.document.attachEvent  
  18. ('onmouseup',function()  
  19. {  
  20. currentMoveObj.releaseCapture();  
  21. currentMoveObj = null;  
  22. });  
  23.  ////拖拽时,始终更新当前拖拽对象的坐标即可  
  24. function mouseMove()  
  25. {  
  26. if(null != currentMoveObj)  
  27. {  
  28. currentMoveObj.style.pixelLeft = event.x - relLeft;  
  29. currentMoveObj.style.pixelTop = event.y - relTop;  
  30. }  
  31. }  
  32.    
  33.  ////为每一个TABLE对象注册mousedown和mousemove事件  
  34. var elements = document.getElementsByTagName("table");  
  35. window.onload=function () {  
  36. for(var i = 0;i < elements.length;i ++)  
  37. {  
  38. var obj = elements[i];  
  39. attachDragAction(obj);  
  40. }  
  41. };  
  42.    
  43. function attachDragAction(obj) {  
  44. obj.onmousedown= function(){ mouseDown(obj)};  
  45. obj.onmousemove= function(){ mouseMove()};  
  46. }  
  47. </script>  


[html] view plaincopyprint?
  1. <p>JS拖拽</p>  
  2. </body>  
  3. </html>