私はイベントリスナーを削除する方法を見つけようとしています。ボタンにイベントリスナーを追加する関数を作ったが、関数が再び実行されると、イベントリスナーを削除してもう一度追加したい。しかし代わりに別のイベントリスナーを追加するだけで、ボタンをクリックするとイベントリスナー関数が2回実行されます。または、ボタンに2番目のイベントリスナーを追加しないようにすることもできます。ここで重複イベントリスナーの削除
は、任意のヒントは、最も参考になるコード
<button id="myId">My Button</button>
<script>
myFunction()
myFunction()
function myFunction() {
var el = document.getElementById('myId')
var listenerFn = function() {
console.log('My Message')
}
el.removeEventListener('click', listenerFn)
el.addEventListener('click', listenerFn)
}
</script>
です。
UPDATE:
@FathiAlqadasiの答えは私の問題のためにこれまでの最高です。しかし、私はより多くのコードを表示する必要があります。リスナー関数は動的であり、リスナー関数の機能はさまざまです。ここに私が意味するものの別の例があります。
<button id="myId">My Button</button>
<script>
myFunctionA()
myFunctionA()
function myFunctionA() {
var el = document.getElementById('myId')
myFunctionB()
function myFunctionB() {
if (el.innerHTML === 'My Button') {
var listenerFn = function() {
console.log('My Message 1')
}
el.removeEventListener('click', listenerFn);
el.addEventListener('click', listenerFn);
}
else {
var listenerFn = function() {
console.log('My Message 2')
}
el.removeEventListener('click', listenerFn);
el.addEventListener('click', listenerFn);
}
}
}
</script>
UPDATE 2:
コードの@ありがとうございます。ここで
<button id="myId">My Button</button>
<script>
var listenerFn;
myFunction();
myFunction()
function myFunction() {
var el = document.getElementById('myId')
el.removeEventListener('click', listenerFn);
listenerFn = function() {
console.log('My Message')
}
el.addEventListener('click', listenerFn, false);
}
</script>
私は私の全体的なコードの更新を行いました。 – Peter
ok、あなたは上記のコードを試してみて、それをテストしたのです –
コードは機能しますが、最初の投稿に表示されるはずの機能は動的ではありません。上記を理解するために私のアップデートを読んでください。 – Peter