我需要保留checkZipValidHandler
一個命名函數,以便稍後可以刪除事件偵聽器(無法使用匿名函數刪除事件偵聽器)。將參數添加到指定函數處理程序
但我還需要傳遞一個名爲origin
的參數以及事件對象。我不想將任何屬性應用於HTML以附加到事件對象。
我該如何做到這一點,仍然保持它的命名功能?
const checkZipValidHandler = function(e, origin) {
console.log(origin);
const zipInput = document.querySelector('.f-zipcode-no-inventory');
const chooseBtn = document.querySelector('.f-search-button-no-inventory');
checkZipValid(e, zipInput.value, chooseBtn, origin);
}(origin);
const addEventListeners = (origin) => {
const zipInput = document.querySelector('.f-zipcode-no-inventory');
const chooseBtn = document.querySelector('.f-search-button-no-inventory');
chooseBtn.addEventListener('click', validateRetryHandler);
zipInput.addEventListener('keyup', checkZipValidHandler.bind(origin));
};
到底是什麼問題?有額外的形式參數不會傷害任何東西。 – Pointy
'e'越來越受到破壞,並且顯示了url而不是實際的事件對象。 – dman
所以,首先你的代碼中沒有命名函數,第一行是將一個匿名函數的調用分配給你的'checkZipValidHandler'變量。其次,當你的函數沒有返回任何東西時,你爲什麼將函數調用追加到變量中? –