首页 > 语言 > JavaScript > 正文

javascript实现行拖动的方法

2024-05-06 16:20:56
字体:
来源:转载
供稿:网友

这篇文章主要介绍了javascript实现行拖动的方法,涉及javascript鼠标事件及页面元素的相关操作技巧,需要的朋友可以参考下

本文实例讲述了javascript实现行拖动的方法。分享给大家供大家参考。具体如下:

 

 
  1. <!doctype html> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>行拖动</title> 
  6. <script> 
  7. window.onload = function(){ 
  8. //绑定事件 
  9. var addEvent = document.addEventListener ? function(el,type,callback){ 
  10. el.addEventListener( type, callback, !1 ); 
  11. } : function(el,type,callback){ 
  12. el.attachEvent( "on" + type, callback ); 
  13. //判定对样式的支持 
  14. var getStyleName= (function(){ 
  15. var prefixes = ['''-ms-','-moz-''-webkit-''-khtml-''-o-']; 
  16. var reg_cap = /-([a-z])/g; 
  17. function getStyleName(css, el) { 
  18. el = el || document.documentElement; 
  19. var style = el.style,test; 
  20. for (var i=0, l=prefixes.length; i < l; i++) { 
  21. test = (prefixes[i] + css).replace(reg_cap,function($0,$1){ 
  22. return $1.toUpperCase(); 
  23. }); 
  24. if(test in style){ 
  25. return test; 
  26. return null
  27. return getStyleName; 
  28. })(); 
  29. var userSelect = getStyleName("user-select"); 
  30. //精确获取样式 
  31. var getStyle = document.defaultView ? function(el,style){ 
  32. return document.defaultView.getComputedStyle(el, null).getPropertyValue(style) 
  33. } : function(el,style){ 
  34. style = style.replace(//-(/w)/g, function($, $1){ 
  35. return $1.toUpperCase(); 
  36. }); 
  37. return el.currentStyle[style]; 
  38. var dragManager = { 
  39. y:0, 
  40. dragStart:function(e){ 
  41. e = e || event; 
  42. var handler = e.target || e.srcElement; 
  43. if(handler.nodeName === "TD"){ 
  44. handler = handler.parentNode; 
  45. dragManager.handler = handler; 
  46. if(!handler.getAttribute("data-background")){ 
  47. handler.setAttribute("data-background",getStyle(handler,"background-color")) 
  48. //显示为可移动的状态 
  49. handler.style.backgroundColor = "#ccc"
  50. handler.style.cursor = "move"
  51. dragManager.y = e.clientY; 
  52. if(typeof userSelect === "string"){ 
  53. return document.documentElement.style[userSelect] = "none"
  54. document.unselectable = "on"
  55. document.onselectstart = function(){ 
  56. return false
  57. }, 
  58. draging:function(e){//mousemove时拖动行 
  59. var handler = dragManager.handler; 
  60. if(handler){ 
  61. e = e || event; 
  62. var y = e.clientY; 
  63. var down = y > dragManager.y;//是否向下移动 
  64. var tr = document.elementFromPoint(e.clientX,e.clientY); 
  65. if(tr && tr.nodeName == "TD"){ 
  66. tr = tr.parentNode 
  67. dragManager.y = y; 
  68. if( handler !== tr){ 
  69. tr.parentNode.insertBefore(handler, (down ? tr.nextSibling : tr)); 
  70. }; 
  71. }, 
  72. dragEnd:function(){ 
  73. var handler = dragManager.handler 
  74. if (handler) { 
  75. handler.style.backgroundColor = handler.getAttribute("data-background"); 
  76. handler.style.cursor = "default"
  77. dragManager.handler = null
  78. if(typeof userSelect === "string"){ 
  79. return document.documentElement.style[userSelect] = "text"
  80. document.unselectable = "off"
  81. document.onselectstart = null
  82. }, 
  83. main:function(el){ 
  84. addEvent(el,"mousedown",dragManager.dragStart); 
  85. addEvent(document,"mousemove",dragManager.draging); 
  86. addEvent(document,"mouseup",dragManager.dragEnd); 
  87. var el = document.getElementById("table"); 
  88. dragManager.main(el); 
  89. </script> 
  90. <style> 
  91. .table{width:60%;border: 1px solid red;border-collapse: collapse;} 
  92. .table td{border: 1px solid red;height: 20px;} 
  93. </style> 
  94. </head> 
  95. <body> 
  96. <h1>行拖动</h1> 
  97. <table id="table" class="table"
  98. <tbody> 
  99. <tr><td>1</td><td>One</td><td>dom.require</td></tr> 
  100. <tr id="2" ><td class="2">2</td><td>Two</td><td>ControlJS </td></tr> 
  101. <tr id="3" ><td class="3">3</td><td>Three</td><td>HeadJS</td></tr> 
  102. <tr id="4" ><td class="4">4</td><td>Four</td><td>LAB.js</td></tr> 
  103. <tr id="5" ><td class="5">5</td><td>Five</td><td>$script.js</td></tr> 
  104. <tr id="6" ><td class="6">6</td><td>Six</td><td>NBL.js</td></tr> 
  105. </tbody> 
  106. </table> 
  107. </body> 
  108. </html> 

希望本文所述对大家的javascript程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选