2016-12-29 13 views
1

関数の内部で作成されたイベントリスナーを削除しようとしていますが、何らかの理由で機能しません。私はそれを機能から取り除くとうまく動作します。以下の例:関数の内部で作成されたイベントリスナを削除しますか? (JavaScript)

<body> 
<div id='myDiv'></div> 
<button type='submit' onclick='rel()'>RemoveEventListener</button> 

<script> 
function Mouse() { 
    myDiv.addEventListener('click', cK); 
    function cK() { 
     alert('You've clicked on myDiv!'); 
    } 
} 
function rel() { 
    myDiv.removeEventListener('click', cK); 
} 
Mouse(); 
</script> 
</body> 
+1

「myDiv」コンポーネントへの参照はどのように取得しますか?削除のために同じリファレンスを使用していますか? – VadimB

+0

私はそれを含むグローバル変数を持っていますが、コピーするのを忘れました –

+0

@VadimB 'id = 'myDiv'で、対応するHTMLElementはグローバル変数として公開されます。 – dfsq

答えて

5

ckは、それがrelでは利用できないMouseの内部で定義されている場合。外に移動:

function cK() { 
    alert('You\'ve clicked on myDiv!'); 
} 
function Mouse() { 
    myDiv.addEventListener('click', cK); 
} 
function rel() { 
    myDiv.removeEventListener('click', cK); 
} 
+0

また、VadimBの質問 – DhruvJoshi

+0

に関するコメントを参照してくださいありがとうございます。問題を解決しました –

+0

イベントリスナーを追加する前に呼び出されたremove関数は問題を引き起こす可能性がありますか? –

関連する問題