国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > 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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 安龙县| 蒙城县| 乌兰县| 北安市| 垦利县| 杭锦后旗| 永春县| 新兴县| 旅游| 涞水县| 临汾市| 正定县| 和平区| 元谋县| 郸城县| 留坝县| 清新县| 革吉县| 辽中县| 财经| 长寿区| 丹东市| 大化| 陇西县| 韶关市| 屏东县| 碌曲县| 醴陵市| 张家界市| 谢通门县| 高密市| 庆阳市| 天峻县| 宝兴县| 铜川市| 宿迁市| 梨树县| 东港市| 图木舒克市| 盘山县| 铜川市|