javascript - 检查是否有办法在 querySelector 之后链接函数,即使它可能是空的?
问题描述
只是想看看是否有一种更简洁的方法可以使用 querySelector 而不使用 jQuery 来执行以下操作。
document.querySelector('#cancel-message').addEventListener('click', () => $("#accession_message").modal("hide"));
以上将在元素不存在的页面上引发“未定义”错误,我知道可以使用 jQuery 或仅执行以下操作来避免该问题:
x = document.querySelector('#cancel-message');
if(x) {
x.addEventListener('click', () => $("#accession_message").modal("hide"));
}
我想看看它是否可以使用vanilla javascript来完成,我想知道是否有一个javascript方法/函数可以在querySelector之后和'addEventListener'之前链接到它,这样它只会执行下一个链接函数如果元素存在并防止触发“未定义”错误。有这种事吗??例如
document.querySelector('#cancel-message'). javacriptFunction() .addEventListener('click', () => $("#accession_message").modal("hide"));
解决方案
一旦实现了可选链接(或者您使用 Babel 使用此插件转译您的代码),您可以使用?.
:
document.querySelector('#cancel-message')?.addEventListener('click', () => $("#accession_message").modal("hide"));
// ^^
这样,如果querySelector
计算结果为null
,则整个表达式将计算结果为undefined
,并且addEventListener
不会被调用。
除此之外,没有办法避免if
检查 vanilla Javascript。
(但不要害怕使用明确的if
——更长的、可读的代码可以说比更短的、打高尔夫球的代码更好,其他一切都一样)
推荐阅读
- windows - 在窗口中的主机文件中映射特定网站
- python - ValueError:预期的 2D 数组,得到 1D 数组:array=[0.31818181 0.40082645 0.49173555 ... 0.14049587 0.14876033 0.15289256]
- docusignapi - DocuSign API - RecipientView - 你如何指定排除的文档?
- java - 如何加快呈现永远占用的 Recycler 视图的项目?
- java - 是否可以在 java 中传递结果集?
- go - 模板部分呈现为明文
- php - 带有嵌套图像标签的 XML 上的 SimpleXML_Load_String 未捕获“url”属性
- sharepoint - Power BI 报表生成器 - SharePoint 作为数据源
- javascript - 将 Javascript 添加到 Drupal ../Node/Add/*?
- opengl - 添加纹理时分离 3D 模型