情况有点像——
var someVar = some_other_function();
someObj.addEventListener("click", function(){
some_function(someVar);
}, false);
问题是 someVar
的值在 addEventListener
的侦听器函数中不可见,它可能被视为新变量。
原文由 Abhishek Yadav 发布,翻译遵循 CC BY-SA 4.0 许可协议
情况有点像——
var someVar = some_other_function();
someObj.addEventListener("click", function(){
some_function(someVar);
}, false);
问题是 someVar
的值在 addEventListener
的侦听器函数中不可见,它可能被视为新变量。
原文由 Abhishek Yadav 发布,翻译遵循 CC BY-SA 4.0 许可协议
为什么不直接从事件的目标属性中获取参数呢?
例子:
const someInput = document.querySelector('button');
someInput.addEventListener('click', myFunc, false);
someInput.myParam = 'This is my parameter';
function myFunc(evt)
{
window.alert(evt.currentTarget.myParam);
}
<button class="input">Show parameter</button>
JavaScript 是一种面向原型的语言,记住!
原文由 Zaloz 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
您编写的代码绝对没有问题。
some_function
和someVar
都应该是可访问的,以防它们在匿名的上下文中可用被创建。
检查警报是否为您提供了您一直在寻找的值,确保它可以在匿名函数的范围内访问(除非您有更多代码在调用
addEventListener
旁边的同一个someVar
变量上运行)