2011-09-17 14 views
13
var x = event.target||event.srcElement; 
document.getElementById(x.id).style.left = 200 + "px" ; 
document.getElementById(x.id).style.top = 100 + "px" ; 

Google ChromeとIEではうまく動作しますが、Firefoxではうまく動作しません。 googleで試してみてください。 googleはevent.srcElement(IEでは動作しますがfirefoxでは動作しません)と言うので、event.targetを追加しましたが、まだ動作していません。 firefoxで作業するために必要な変更がもうありますか?ところで、私はFirefoxの3.5バージョンを使用しています。event.targetがFirefoxで動作していません

 function up() 
      { 
       dragok = false; 
       document.onmousemove = null; 
       var x = event.target||event.srcElement; 
       document.getElementById(x.id).style.left= 200 + "px" ; 
       document.getElementById(x.id).style.top= 100 + "px" ; 
      } 

それはあなたがハンドラへの仮パラメータとしてeventを定義していることを確認してくださいFirefoxの

+0

「動作しない」完全なコードのhttp://jsfiddle.net/またはhttp://jsbin.com/の例を作成できますか? –

+0

もっとコードを表示してください(理想的にはJSFiddleデモ)?ところで、 'x'の' id'を探して、 'id'で特定の要素を振り返る必要はありません。' x.style.left'だけで作業できます。 – duri

答えて

34

に動作させるために私を助けてください。

IEはそれをグローバルに定義しており、Chromeは両方の場所で両方を定義しているためどちらの方法でも動作しますが、Firefoxは関数パラメータとしてのみ定義します。

function up(e) { 
    //  ^-----------------------------------------------------+ 
    if(!e) e = window.event; // <---needed this --- and this ->--+ 

    dragok = false; 
    document.onmousemove = null; 
    var x = e.target||e.srcElement; // <--- and these 
    document.getElementById(x.id).style.left= 200 + "px" ; 
    document.getElementById(x.id).style.top= 100 + "px" ; 
} 
1

私はJqueryを使用して問題を解決しました。たとえば、要素のIDを取得するには、

var x = $(this).attr('id'); 
0

このソリューションはFirefoxブラウザでも動作します。起動時に​​アクションが発生した場合は、eventプロパティをグローバル変数に設定します。

var keyEvent=null; 

keyEvent.itemからeventプロパティは、ターゲット要素であることを割り当てます。

$(document).on("keydown",'.item', function(e){ 

       keyEvent=e;          

     },this)) 

次に、コードにkeyEventを使用してください。

 function up(e) { 
      if(!e) e = keyEvent; 
      dragok = false; 
      document.onmousemove = null; 
      var x = e.target||e.srcElement; 
      document.getElementById(x.id).style.left= 200 + "px" ; 
      document.getElementById(x.id).style.top= 100 + "px" ; 
     } 

windowのグローバル変数にeventプロパティを設定しようとしないでください。

関連する問題