开发者问题收集

Javascript - 未捕获的 TypeError:无法读取 null 的属性“classList”

2017-02-23
22467

如何检查我单击的元素是否具有类列表?

let dropdown  = target.nextElementSibling.classList.contains('form__select-dropdown')

当我单击的元素没有附加类时,我的代码在此行出错。

这完全说得通。

但是,我只希望在 nextElementSibling 具有类 form__select-dropdown 时运行以下代码:

if (!selectTag && dropdown) {
            target.querySelector('.form__select-dropdown').classList.remove('active')
        } else {
            target.nextElementSibling.classList.toggle('active')
        }

因此,我需要在执行条件之前检查 target.nextElementSibling.classList 是否存在以避免错误,但我不确定如何做到这一点?

1个回答

您的问题是 target 并不总是具有 nextElementSibling ;您应该在继续之前检查它是否为 null

let next = target.nextElementSibling
let dropdown = next && next.classList.contains('form__select-dropdown')

稍后在您的代码中:

if (!selectTag && dropdown) {
        target.querySelector('.form__select-dropdown').classList.remove('active')
    } else {
        next && next.classList.toggle('active')
    }
gyre
2017-02-23