1

input要素のイベントを削除しようとしています。

私は次のものを持っています

//add mouse up event on all element under mainDiv
addEvent('mainDiv', 'onmouseup', mouseUpFun);

//search all the input elements and remove the mouse up event 
inputs = document.getElementsByTagName('input');
    for(var i; i < inputs.length; i++){
      var input = inputs[i];
       input.removeEventListener('onmouseup');
    }

上記のコードは機能せず、まだonmouseupイベントが関連付けられています。

誰でもこの問題について私を助けることができますか? どうもありがとう!

4

2 に答える 2

3

理由の 1 つは、ループが実行されないことです。iループで初期化する必要があります。

for(var i = 0; i < inputs.length; i++){
   var input = inputs[i];
   input.removeEventListener('onmouseup');
}

iそうしないと、初期値が であるため、このループは実行されませんundefined

への呼び出しremoveEventListenerも期待どおりに機能しません。また、使用したリスナー/ハンドラーへの参照を提供する必要があります。

の正しい使い方はこちらをご覧くださいremoveEventListener

すべてが を使用している場合はmouseUpFun、それを に提供できますremoveEventListener:

input.removeEventListener('onmouseup', mouseUpFun);
于 2013-07-12T23:16:47.567 に答える
0

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListenerを参照してください。

を使用する場合removeEventListener、削除するリスナー関数への参照が必要です。

次に、次のことができます。

  • 関数を使用するaddEventと、追加したリスナーの参照を保存できます

また

  • 要素を複製して、複製で置き換えることができます。このようにして、すべてのイベント リスナー (その子のイベント リスナーを含む) を削除します。
于 2013-07-12T23:20:28.753 に答える