8

マウスの位置に応じて 1 つの div を移動する Javascript の関数があります。この関数は関数に設定され、setInterval()毎秒実行されます。次のようにマウスの位置をキャプチャする必要があります。

function mousemov() {
  document.getElementById("myDiv").style.left = Event.clientX; //don't work
}

window.onload = function() {
  setInterval("mousemov()",1000);
}

Ps:mousemoveマウスが停止していても関数を実行する必要があるため、イベントを使用できません。

4

2 に答える 2

9

イベント オブジェクトにアクセスできるのは、イベント ハンドラの実行中だけです。そのため、ドキュメントで OnMouseMove イベントを作成し、マウス座標をグローバルにアクセス可能なオブジェクトに保存する必要があります。その後、スクリプト内の他の場所からこれらの値にアクセスして、マウスの位置を決定できます。

以下に例を示します (jQuery を使用していないため、これは単純な DOM コードです)。

document.onmousemove = function(e) {
    var event = e || window.event;
    window.mouseX = event.clientX;
    window.mouseY = event.clientY;
}

function mousemov() {
    document.getElementById("myDiv").style.left = window.mouseX;
}

window.onload = function() {
    setInterval(mousemov, 1000);
}

clientX と clientY はスクロールを考慮していないことに注意してください。スクロール オフセットを取得して、返された値に適用する必要があります。

于 2009-10-22T17:00:55.773 に答える
1

ええと、あなたがドキュメントのマウスの動きを聞いてその場所を保存するなら、あなたが望むときはいつでも、例えばあなたの場合は毎秒、あなたは最新の登録されたマウスの位置を持っています。

これはjqueryの例です

$(document).ready(function()
 {
  $().mousemove(function(e)
   {
       window.mouseX = e.pageX;
       window.mouseY = e.pageY;
  });
});

そしてあなたのmousemove関数は

function mousemov() { 
    document.getElementById("myDiv").style.left = window.mouseX;
}
于 2009-10-22T16:55:04.850 に答える