我有
getEventNameFromInput() {
this.inputName.addEventListener('keyup', this.eventName())
}
eventName() {
let eventName = [];
return (e) => {
eventName.push(e.target.value)
}
};
我嘗試在第二個物件中使用,但不起作用。:
interfaceUser.inputName.removeEventListener('keyup', interfaceUser.eventName())
this 和 interfaceuser 是參考物件的同一個實體。getEventNameFromInput 和 eventName 在物件 InterfaceUser 中
uj5u.com熱心網友回復:
當您呼叫時,removeEventListener您必須傳遞相同的函式。
使用您現有的代碼,每次呼叫 時eventName,它都會生成一個新的箭頭函式并回傳該函式。相同的功能將無法完成這項作業。您需要相同的功能。
這意味著您需要在創建函式時存盤它,然后在下次需要時從存盤中檢索值。
例如:
eventName() {
if (!this.eventHandler) {
let eventName = [];
this.eventHandler = (e) => {
eventName.push(e.target.value)
}
}
return this.eventHandler;
};
uj5u.com熱心網友回復:
我建議使用此處指定的自定義事件:https : //developer.mozilla.org/en-US/docs/Web/Events/Creating_and_triggering_events
const form = document.querySelector('form');
const textarea = document.querySelector('textarea');
form.addEventListener('awesome', e => console.log(e.detail.text()));
textarea.addEventListener('input', function() {
// Create and dispatch/trigger an event on the fly
// Note: Optionally, we've also leveraged the "function expression" (instead of the "arrow function expression") so "this" will represent the element
this.dispatchEvent(new CustomEvent('awesome', {
bubbles: true,
detail: {
text: () => textarea.value
}
}))
});
<form>
<textarea></textarea>
</form>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/384845.html
標籤:javascript 数组
上一篇:撰寫R函式,僅在宣告時進行子集
