onclick
によって呼び出される関数と同じ関数でイベントリスナーを削除しようとしています。onclick関数であるイベントリスナー/ onclickを削除します。
次の例は、私の問題を示しています。私がその種の構造を使用しようとしているのは、ビューオブジェクトに関数を渡して、それをonclick
関数を作成された要素に追加できるようにするためです。
"use strict";
// Do I need var fun = function()... here or I could use only function fun() { ....}?
var fun = function(obj, num) {
alert(obj.id + ' ' + num);
obj.onclick = ""; // Version 1. This seems to work
//obj.removeEventListener('click',); // Version 2. What should I add after the comma to remove EventListener?
}
setFn(fun);
function setFn(fn) {
var funct = fn;
var val = 10;
var elem = document.getElementById('test');
// The next function works with and without return. What are the differences? Are there any possible memory leaks?
elem.onclick = function() { funct(this, 11); }; // Version 1. Why in this case 'this' is not referring to the global 'window'?
//elem.addEventListener('click', function() {funct(this, val); }); // Version 2.
}
ありがとうございます。
ドキュメントを読もうとしましたか? https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener – glennsl
はい、持っています。私は要素をクリックするときに呼び出すのと同じ機能でそれを削除することについて何も言いません。メモリリークについては何も言いません。私はメモリリークが発生する場合があることを知っています。残念ながら、私はすべてのコーナーケースを知っていません。 – Name