私は自分のカラーピッカーホイールをJavascriptで実行しようとしています。小さな円をドラッグして色を選択できるようにしたいのです( "+" )またはホイールのどこかをクリックして(小さな円をドラッグすることなく、小さな円をその位置に移動する必要があります)。またマウスボタン(mouseup)を離すまで、ホイールのどこかにマウスを置いた後(mousedownイベントが発生したとき)、小さな円をドラッグすることができます。 HEREEventListenerを別のイベントリストに追加するときにRemoveEventListenerが機能しない
:私が視覚的に欲しいものをここに見ることがはるかに簡単です: https://jsfiddle.net/s1qesLp9/1/
あなたのコメントを解除行78場合、あなたは問題が何であるかを見ることができます。
問題は、eventListenersを追加して削除するとき(私が上記をすべて実行したいので、mousedown、mousemove、mouseupを使用しているので)、mousedownごとに警告数が1増加する(私はただ一つの警報がここに必要です、車輪にいくつのマウスハウスがあるのかとは無関係です!)。私はそれがドキュメントオブジェクトと関係しなければならないか、またはeventListenersを削除することに何か問題があると思っていましたが、わかりません。
は、ここで私はとの問題を抱えている部分が来る:あなたはすべてのマウスダウン後のmouseUpするための新しいリスナーを追加し、それを削除することはありませんしているのでdocument.getElementById('wheel').addEventListener('mousedown', function(e) {
targetMove(e);
document.addEventListener('mousemove', targetMove);
document.addEventListener('mouseup', function() {
document.removeEventListener('mousemove', targetMove);
document.onmouseup = null;
alert("Here is the problem: For every mousedown on the wheel, the
number of alerts is increased by 1 (I only want one alert here!)");
});
}, false);
私はあなたがフラグを設定することによって何を意味するのかよく分かりません。コードでも表示することは可能ですか?それは理解しやすいからです。私はリスナーをmouseupに削除することは決してないと言いましたが、function()内のコードに従ってリスナー(mouseupとmousemove)を削除しないでください: document.removeEventListener( 'mousemove '、targetMove); document.onmouseup = null; – amarillo
私の知る限り、リスナーを削除するには、document.onmouseup = nullまたはdocument.removeEventListener( 'mouseup'、targetMove)を実行します。私は、すべての解決策がなくても両者を試してみるべきです。 – amarillo