在Dom事件中QQ拖拽源代碼問題
在Dom事件中QQ拖拽源代碼問題:
請問各位大神:onmouseup放在onmousedown中和放在onmousedown外有什么區別么? 我先放在onmousedown中,按下幾次釋放后都沒有什么問題,可是如果onmouseup放在onmousedown外面,當第二次按下時松開鼠標窗口還是跟著鼠標走,此時貌似onmouseup沒有效用?想問下這種情況是為什么,謝謝!
在Dom事件中QQ拖拽源代碼問題:
請問各位大神:onmouseup放在onmousedown中和放在onmousedown外有什么區別么? 我先放在onmousedown中,按下幾次釋放后都沒有什么問題,可是如果onmouseup放在onmousedown外面,當第二次按下時松開鼠標窗口還是跟著鼠標走,此時貌似onmouseup沒有效用?想問下這種情況是為什么,謝謝!
2017-10-08
舉報
2017-10-10
function getByClass(clsName,parent){
? var oParent=parent?document.getElementById(parent):document,
????? eles=[],
????? elements=oParent.getElementsByTagName('*');
? for(var i=0,l=elements.length;i<l;i++){
??? if(elements[i].className==clsName){
????? eles.push(elements[i]);
??? }
? }
? return eles;
}
//這里定義了getByClass()
var oTitle=getByClass('login_logo_webqq','loginPanel')[0];
?? //這里調用了上面的getByClass(),目的是為了獲取指定父族元素下指定類名的元素
?? oTitle.onmousedown=fnDown;
//這里是給上面獲取的元素添加鼠標點擊事件fnDown
function fnDown(event){
? event = event || window.event;
? var oDrag=document.getElementById('loginPanel'),
????? // 光標按下時光標和面板之間的距離
????? disX=event.clientX-oDrag.offsetLeft,
????? disY=event.clientY-oDrag.offsetTop;
? // 移動
? document.onmousemove=function(event){
? ?? ?event = event || window.event;
? ?? ?fnMove(event,disX,disY);
? }
? // 釋放鼠標
? document.onmouseup=function(){
? ?? ?document.onmousemove=null;
? ?? ?document.onmouseup=null;
//最后你的問題,你說為什么不能把這句放在外面fnDown函數外面嗎?
//因為這是預先注冊了鼠標點擊事件,而.onmouseup是觸發了鼠標點擊事件調用了fnDown函數現場現注冊的。
//而如果你把? ? document.onmouseup=function(){...}放在外面的話 document就不是oTitle了,所以oTitle就沒//有鼠標釋放事件了,所以就你的鼠標一直沒松開,所以你的鼠標一直在點擊,所以你的鼠標移動就一直在拖動div,所以你懂了嗎?
? ???
}
2017-11-20
不要過于強迫癥了哈,
2017-10-10
謝謝您的回答!我稍微理解了您的意思。
但是當我把fnDown函數中的onmouseup事件去除,之后在oTitle.onmousedown=fnDown;后面加上
? ? ?oTitle.onmousedown=fnDown;
? ? //alert(document);
? ? oTitle.onmouseup=function(){
? ? ? ? //alert(document);
? ? ? ? // alert(oTitle);
? ? ? ? // this.onmousedown=null;
? ? ? ? this.onmousemove=null;
? ? ? ? this.onmouseup=null;
之后拖拽功能還是不能實現,您說“document就不是oTitle”,可是現在我是在oTitle上面+的onmouseup事件,拖拽功能還是實現不了,不明白。(我就是想著onmousedown和onmouseup是一對,看著onmouseup在onmousedown里面怪難受,看看能不能將onmouseup放在外面)