问题产生的原因通常是和作用域相关。将注册事件和触发事件的代码都放在同一个作用域内,或使用bind()方法明确指定this关键字可以解决问题。
示例代码:
HTML:
JS: var button = document.getElementById('myButton');
function handleClick() { console.log('触发了click事件'); }
// 错误的写法: button.addEventListener('click', handleClick);
// 正确的写法: button.addEventListener('click', handleClick.bind(this));