js的一个托拽功能,网上找的,记录一下

直接写成js文件了,示例也写里面
//  JavaScript Document

function  $(_sId) {return document.getElementById(_sId);}
function  moveStart (event, _sId) {
  
var oObj = $(_sId);
  oObj.onmousemove 
= mousemove;
  oObj.onmouseup 
= mouseup;
  oObj.setCapture 
? oObj.setCapture() : function(){};
  oEvent 
= window.event ? window.event : event;
  
var dragData = {x : oEvent.clientX, y : oEvent.clientY};
  
var backData = {x : parseInt(oObj.style.top), y : parseInt(oObj.style.left)};
  
function mousemove(){
   
var oEvent = window.event ? window.event : event;
   
var iLeft = oEvent.clientX - dragData["x"+ parseInt(oObj.style.left);
   
var iTop = oEvent.clientY - dragData["y"+ parseInt(oObj.style.top);
   oObj.style.left 
= iLeft;
   oObj.style.top 
= iTop;
   backData.y
=iLeft; //本可以不加
   backData.x=iTop; //本可以不加
   //document.getElementById("x").innerHTML=oObj.style.left+"|"+iLeft+"|"+ backData.y;
   //document.getElementById("y").innerHTML=oObj.style.top+"|"+iTop+"|"+ backData.x;
   dragData = {x: oEvent.clientX, y: oEvent.clientY};   
  }

  
function mouseup(){
   
var oEvent = window.event ? window.event : event;
   oObj.onmousemove 
= null;
   oObj.onmouseup 
= null;
   
if(oEvent.clientX < 1 || oEvent.clientY < 1 || oEvent.clientX > document.body.clientWidth || oEvent.clientY > document.body.clientHeight){
    oObj.style.left 
= backData.y; 
    oObj.style.top 
= backData.x;
    
//document.getElementById("x").innerHTML=oObj.style.left+"|"+backData.y;
    //document.getElementById("y").innerHTML=oObj.style.top+"|"+backData.x;
   }

   oObj.releaseCapture 
? oObj.releaseCapture() : function(){};
  }

 }

 
/*
  *示例:
  *<div id="msg" style="position:absolute;top:20px;left:100px;" >
  *  <table width="200" border="0" cellspacing="0" cellpadding="0" >
  *      <tr>
  *        <td colspan="2"  οnmοusedοwn="javascript:moveStart(event,'msg');" οnmοuseοver="this.style.cursor='move';" >系统消息</td>
  *      </tr>
  *      <tr>
  *        <td width="87">123456</td>
  *        <td width="113">1231656</td>
  *     </tr>
  *  </table>
  *</div>
  
*/

还有一种,没试过,直接copy过来先,看上去也蛮好用的,这种是用样式控制的,使用起来比前面那种相对简单,但功能就不知道了
< style >
<!--
.drag
{position:relative;cursor:hand}
-->
</ style >
< script language = " JavaScript1.2 " >
<!--
var dragapproved
= false
var z,x,y
function move()
{
if (event.button==1&&dragapproved){
z.style.pixelLeft
=temp1+event.clientX-x
z.style.pixelTop
=temp2+event.clientY-y
return false
}

}

function drags()
{
if (!document.all)
return
if (event.srcElement.className=="drag"){
dragapproved
=true
z
=event.srcElement
temp1
=z.style.pixelLeft
temp2
=z.style.pixelTop
x
=event.clientX
y
=event.clientY
document.onmousemove
=move
}

}

document.onmousedown
= drags
document.onmouseup
= new  Function( " dragapproved=false " )
// -->
</ script >
< p >< img src = " http://www.soojs.com/images/137_46_logo.gif "   class = " drag " ></ p >
        
< p >< font face = " Arial Black "   class = " drag " > 拖我 </ font ></ p >
        
< p > 在需要拖动的元素 + class = drag即可 </ p >
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值