登录
首页 >  文章 >  前端

addEventListenerchange事件event.target为null?原因及解决方法

时间:2025-03-06 22:18:00 122浏览 收藏

addEventListener 中 change 事件的 `event.target` 为 null 是一个常见的 JavaScript 问题。本文将详细解释其原因:在事件触发时,绑定事件的 input 元素尚未添加到 DOM 树中,导致 `event.target` 返回 null。文章提供了解决方案:确保在将 input 元素添加到 DOM 后再绑定 `addEventListener`。通过将 `input.addEventListener('change', handleFileSelect, false);` 放在 `document.body.appendChild(input);` 之后,即可解决 `event.target` 为 null 的问题,确保事件处理函数能够正确获取目标元素。

addEventListener中change事件的event.target为何为null?

addEventListenerchange 事件的 event.target 为空的原因及解决方法

代码中,change 事件处理函数 handleFileSelect 内的 event.target 返回 null,是因为在事件触发时,绑定事件的 input 元素尚未添加到 DOM 中。

解决方法:

确保在将 input 元素添加到 DOM 后再绑定事件监听器。 修改后的代码如下:

const input = document.createElement('input');
input.type = 'file';
input.accept = '.doc, .docx';

// 将 input 元素添加到 DOM 中
document.body.appendChild(input);

// 之后再添加事件监听器
input.addEventListener('change', handleFileSelect, false);

function handleFileSelect(event) {
    console.log(111, event.target); // event.target 现在将指向 input 元素
}

此修改后,change 事件触发时,event.target 将正确地指向 input 元素,而不是 null。 关键在于事件监听器必须在元素已插入 DOM 后才生效。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>