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