Я пытаюсь реализовать два метода: начать и остановить. Проблема в том, что остановка не работает.Как перезаписать прослушиватель событий в прототипе?
const MyObj = function(x) {
this.x = x;
};
MyObj.prototype.start = function(el) {
el.onclick = (function() {
console.log(this.x);
}).bind(this);
};
MyObj.prototype.stop = function(el) {
el.onclick = null;
};
const obj = new MyObj("x");
document.getElementById("checkbox").onchange = function() {
if (this.value) {
obj.start(document.body);
}
else {
obj.stop(document.body);
}
};
Я попытался ""
и function(){}
вместо null
, но те, которые не были эффективными либо. Если я установил событие onclick
в консоли браузера, после того, как я позвонил start
, он будет работать.
Как это исправить?
Пожалуйста, укажите [mcve]. Код, который вы опубликовали, неправильно демонстрирует вашу проблему. – zzzzBov
[Ваш код работает] (https://jsfiddle.net/4d8wj1t5/1/). Но этот подход не имеет смысла. – Oriol
Да, я плохой, я использую флажок и случайно помещаю 'this.value' в if, если вы вызываете start/stop вместо' this.checked'. – Patrick