拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 选择元素(如果存在)的更有效方法,然后在vanillaJavaScript中对其进行处理

选择元素(如果存在)的更有效方法,然后在vanillaJavaScript中对其进行处理

白鹭 - 2022-02-02 2102 0 0

我正在我的网站上进行一些 jQuery 到 Vanilla JS 的转换。在 jQuery 中,我可以这样做:

$("#nav-menu>ul>li.active").removeClass("active");

全部在一行中,将从任何拥有它的 <li> 元素中洗掉“活动”类(只有一个)。如果没有 <li> 元素具有该类,则没有错误并且我的脚本继续运行。

但是,在 Vanilla JS 中,如果我这样做:

document.querySelector('#nav-menu>ul>li.active').classList.remove('active');

并且当前没有 'actove' 类的 <li> 元素,我收到以下错误并且我的脚本停止运行:

Uncaught TypeError: Cannot read prperties of null (reading 'classlist')

我可以像这样解决这个问题:

var active = document.querySelector('#nav-menu>ul>li.active');
if(active) {
  active.classList.remove('active');
}

但我想知道是否有更好、更短的方法来做到这一点(即选择一个元素,如果它存在,然后用它做点什么)?有没有一种速记方式或方法可以用更少的行等来完成?

提前致谢。

uj5u.com热心网友回复:

您可以为此目的使用可选链接,仅当左侧的表达式不是未定义或为空时,它才能访问属性或进入链接函式呼叫。

document.querySelector('#nav-menu>ul>li.active')?.classList.remove('active');
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *