Zmagam się z pozornie prostym ćwiczeniem javascript, pisząc o przeciągnięciu i upuszczeniu wanilii. Myślę Im pomyłki z moich „addeventlisteners”, oto kod:Prosty kod "przeciągnij i upuść"
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);
}
Dzięki za szczegółowa odpowiedź. Używałem Do Do dla mousemove gdy mousedown jest aktywne, w przeciwnym razie nie powinno działać ... jeśli włączę pętlę Do While, Firefox zatrzymuje się. – Kayote
@Kayote Mam gotcha, choć nie będzie to konieczne ze względu na to, jak często zdarzenie 'mousemove' wywołuje' eleMouseMove() ' – iRector
Zaktualizowałem trochę, aby spełnić moje wymagania. Może być pomocny również dla innych, a więc udostępnianie przez http://jsfiddle.net/kjwLe9bq/. – Savaratkar