Re: [請益] 同時判斷onmousdown和onmousemove

看板Ajax作者 (游)時間17年前 (2007/07/25 23:15), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《JYHuang (夏天到了,冷不起來了說)》之銘言: : 我要做一個按下左鍵後可以拖動的元件。 : 我是在一個DIV中同時加了onmousedown,onmouseup,onmousemove三個事件。 : onmousedown之後,會變改游標,再在onmousemove呼叫的函式中 : 視游標是否有改變來判斷是否兩個條件都滿足。 : 可是當按著鍵離開div的範圍後再放開鍵。 : (游標移動太快時,div會跟不上變成游標脫離了div的範圍) : 回到div時,會被視為按鍵被按著的狀態,要再按一下才能恢復。 : 有沒有其它的辦法呢? : http://homepage11.seed.net.tw/web@1/jyhuang/test.html 我改了一下 直接po改的地方好了 var mouseDown = 0; //全域變數 function move(e) { if (mouseDown == 1) { if(!e) e=window.event; X=e.clientX-W; Y=e.clientY-H; document.getElementById("drop").style.left=X+"px"; document.getElementById("drop").style.top=Y+"px"; document.getElementById("text").value= W+","+H; } } function drop(botton,e) { if(botton) { if(!mouseDown) { mouseDown = 1; if(!e) e=window.event; obj = document.getElementById("drop"); obj.style.cursor="move"; W=e.clientX-obj.offsetLeft; H=e.clientY-obj.offsetTop; } } else { mouseDown =0; document.getElementById("drop").style.cursor= "default"; } } 還有把 onmousemove 事件改在body標籤上 先前的程式是根據滑鼠游標來決定要不要移動,但是因為滑鼠動太快跑出div的範圍了, 不知道為什麼滑鼠游標變回default了(不是因為botton變數的關係) 所以改用一個全域變數判斷mousedown,因為div的最上一層是body,所以把onmousemove設 在body上(上一層是有個div id="contant"的,不過...太小又懶得調) 應該有其他更好的寫法 @@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.68.164.21
文章代碼(AID): #16fsa4Ax (Ajax)
文章代碼(AID): #16fsa4Ax (Ajax)