Im đấu tranh với vẻ như là một bài tập javascript đơn giản, viết một thao tác kéo và thả vani. Tôi nghĩ rằng Im thực hiện một sai lầm với 'addeventlisteners' của tôi, đây là mã:Mã kéo và thả đơn giản
var ele = document.getElementsByClassName ("target")[0];
var stateMouseDown = false;
//ele.onmousedown = eleMouseDown;
ele.addEventListener ("onmousedown" , eleMouseDown , false);
function eleMouseDown() {
stateMouseDown = true;
document.addEventListener ("onmousemove" , eleMouseMove , false);
}
function eleMouseMove (ev) {
do {
var pX = ev.pageX;
var pY = ev.pageY;
ele.style.left = pX + "px";
ele.style.top = pY + "px";
document.addEventListener ("onmouseup" , eleMouseUp , false);
} while (stateMouseDown === true);
}
function eleMouseUp() {
stateMouseDown = false;
document.removeEventListener ("onmousemove" , eleMouseMove , false);
document.removeEventListener ("onmouseup" , eleMouseUp , false);
}
Cám ơn trả lời chi tiết. Tôi đã sử dụng Do While cho mousemove trong khi mousedown đang hoạt động, nếu không nó sẽ không chạy ... nếu tôi kích hoạt vòng lặp Do While, Firefox sẽ dừng lại. – Kayote
@Kayote I gotcha, mặc dù nó sẽ không cần thiết do mức độ thường xuyên sự kiện 'mousemove' gọi' eleMouseMove() ' – iRector
Tôi cập nhật nó một chút cho yêu cầu của tôi. Nó có thể hữu ích cho những người khác nữa, do đó http://jsfiddle.net/kjwLe9bq/ chia sẻ. – Savaratkar