我需要保留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'变量。其次,当你的函数没有返回任何东西时,你为什么将函数调用追加到变量中? –