亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

在Dom事件中QQ拖拽源代碼問題

在Dom事件中QQ拖拽源代碼問題:

請問各位大神:onmouseup放在onmousedown中和放在onmousedown外有什么區別么? 我先放在onmousedown中,按下幾次釋放后都沒有什么問題,可是如果onmouseup放在onmousedown外面,當第二次按下時松開鼠標窗口還是跟著鼠標走,此時貌似onmouseup沒有效用?想問下這種情況是為什么,謝謝!

正在回答

2 回答

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,所以你懂了嗎?
? ???

}


1 回復 有任何疑惑可以回復我~
#1

過客彳亍 提問者

謝謝您的回答!我稍微理解了您的意思。 但是評論您的回答不能超過300字,所以我就在下面回答了下,請您看一下,麻煩了! “但是當我把fnDown函數中的onmouseup事件去除,之后在oTitle.onmousedown=fnDown;后面加上.......” 就是這條回答
2017-10-10 回復 有任何疑惑可以回復我~
#2

過客彳亍 提問者

非常感謝!謝謝
2017-11-26 回復 有任何疑惑可以回復我~

不要過于強迫癥了哈,

0 回復 有任何疑惑可以回復我~

謝謝您的回答!我稍微理解了您的意思。

但是當我把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放在外面)


0 回復 有任何疑惑可以回復我~
#1

FloatingShuYin

最近沒有登慕課,遲來的回答! 也許你已經明白了,也許沒有,我還是回答以下把。 onmousedown 是什么? 是鼠標按下! onmouseup 是什么? 是鼠標松開! 請注意,你的鼠標默認就是松開的,所以如果不把onmouseup事件放在onmousedown事件里面,那么onmouseup事件將一直處入觸發狀態!這顯然不符合邏輯,符合邏輯的是我按下鼠標然后觸發onmousedown事件,**按下鼠標后松開** 才能夠觸發onmouseup事件。
2017-11-20 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
DOM事件探秘
  • 參與學習       99531    人
  • 解答問題       1305    個

DOM事件?本課程會通過實例來給小伙伴們講解如何使用這些事件

進入課程

在Dom事件中QQ拖拽源代碼問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號