提问人:xerop 提问时间:10/7/2023 最后编辑:xerop 更新时间:10/8/2023 访问量:48
是否可以在不使用箭头表示法的情况下将参数传递到事件侦听器回调函数中?[复制]
Can you pass arguments into an event listener callback function without using arrow notation? [duplicate]
问:
我一直在寻找解决方案,但我找不到合适的资源。
我正在尝试为要在控制台上打印的按钮创建一个事件侦听器。之后我还需要删除此事件。
我将回调函数作为事件侦听器参数之外的函数声明,据我了解,需要引用相同的函数才能将其从事件中删除。请参阅尝试 3。
通过创建回调函数声明,我需要传入参数。如果我在事件侦听器中传入参数,则该事件会在页面加载时立即调用。请参阅尝试 2。
如果我根本没有传入参数或根本没有传入参数,我可以从事件中删除该函数,但由于没有参数,该函数将无法按预期工作。()
这似乎是一个简单的概念,我一直在研究解决方案,但无法理解我在这里缺少什么。
// callback function
function printText(str){
console.log(str)
}
// attempt 1: no arguments + can remove function after
item.addEventListener('click', printText);
item.removeEventListener('click', printText);
// attempt 2: // prints but invokes immediately, even when event hasn't happen
item.addEventListener('click', printText('text'));
// attempt 3: works but cannot remove after due to being unable to reference the same function
item.addEventListener('click', () => printText('text'));
编辑:我的目标是看看是否有办法在这种情况下解决这个问题。我已经提到了这个问题的重复项,但它们都没有解决我的问题,也没有在我的尝试中得到解决。我需要将参数传递给我的函数。我不能使用匿名函数 + 该函数必须能够在 的参数之外引用,以便我以后可以删除该函数。addeventlistener()
我已经评论说这不是我试图找到解决方案的确切代码,但它正在模仿我想要实现的目标。我不是在寻找一个循序渐进的解决方案,而主要是试图弄清楚我想要实现的目标是否可行。有没有办法将参数传递到可以在以后引用以从事件侦听器中删除的回调函数中?
答: 暂无答案
上一个:Javascript 嵌套回调 API - 出类拔萃
下一个:如何获取承诺的价值?
评论
printText.bind(null, 'text')
或。一定有一个很好的骗子,我似乎还找不到。function printText(arg) { return function() { console.log(arg) } }
printText
,他们知道如何使用箭头函数来实现这一点。他们询问如何删除事件处理程序等匿名函数。使用或闭包并不能解决这个问题。bind
function
function printText() { console.log('text'); }
'text'
str
printText