javascript - 重写,以便在找不到类时不会触发错误

标签 javascript

我目前正在使用以下功能,当用户单击某处以确定是否隐藏下拉菜单(在 react 中)。一切正常,但当我单击正文时,它会记录以下内容。

我尝试重写它几次,但我找不到解决这个问题的方法。

Uncaught TypeError: Cannot read property 'className' of null

我使用的功能

if (!event.target.className.includes('USERBAR_notifications') && !event.target.parentElement.className.includes('USERBAR_notifications') && !event.target.className.includes('USERBAR_user') && !event.target.parentElement.className.includes('USERBAR_user') && this.state.active !== '') {
            this.setState({ active: ''});
        }

最佳答案

因为 event.targetevent.target.parentElement 都可以为 null/undefined,所以首先你应该检查它们是否不为 null尝试访问他们的任何属性:

if (event.target && event.target.parentElement &&
    !event.target.className.includes('USERBAR_notifications') &&
    !event.target.parentElement.className.includes('USERBAR_notifications') &&
    !event.target.className.includes('USERBARa_user') &&
    !event.target.parentElement.className.includes('USERBAR_user') && 
    this.state.active !== '') {
        this.setState({ active: ''});
}

关于javascript - 重写,以便在找不到类时不会触发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245504/

相关文章:

javascript - jquery 切换 div 显示隐藏

javascript - 如何通过 id 单击单选按钮激活事件?

javascript - 如何从使用 javascript 选择的跨度中提取类名?

javascript - 使用 Javascript 的 window.performance.timing 计算页面加载时间

javascript - JQuery DatePicker 通过 PHP Json 不可用日期

javascript - Bootstrap 动态更改面板主体内容

javascript - 引用 ES.next 静态类属性的正确方法是什么?

javascript - 如何在angularjs中将字符串解析为日期

java - 将映射值(在 javascript 中创建)传递给 Action - struts2

javascript - 使用 jQuery 在 javascript 中迭代关联数组(键/值对),其中值是 jQuery 对象