如何处理不在 DOM 中的 'queryselected' 元素

How to handle 'queryselected' element that are not in the DOM

我正在创建一个不共享相同布局的多页网站,并且通过使用单个 javascript 文件,每次元素不在 DOM 中时,控制台都会抛出错误.我正在寻找一种解决方案,避免我在检查元素是否存在的 if 语句中包含每一位代码。

例如

Javascript 文件

let myelement = document.querySelector('.myelement');
let myelementText = myelement.textContent;

console.log(myelementText);

HTML 模板 #1

<ul>
    <li>Element</li>
    <li>Element</li>
    <li>Element</li>
    <li>Element</li>
</ul>

模板 #1 的控制台输出

Uncaught TypeError: Cannot read property 'textContent' of null
    at window.onload ((index):33)

HTML 模板 #2

<ul>
    <li>Element</li>
    <li>Element</li>
    <li>Element</li>
    <li class="myelement">Element</li>
</ul>

模板 #2 的控制台输出

element

当前 - 希望 - 可避免的解决方案

let myelement = document.querySelector('.myelement');
if (typeof (myelement) != 'undefined' && myelement != null) {
  let myelementText = myelement.textContent;

  console.log(myelementText);
}

无法检查元素是否存在。您可以删除 typeof undefined 检查,检查 != null 就足够了。

在何处实施此检查取决于您,在第一种情况下,您可以使用 something like this 而不是 select myelement。

if (document.querySelector('.myelement') !== null) {
  alert('The element "myelement" exists in the page.');
} else {
  alert('The element "myelement" does not exists in the page.');
}

let myelement = document.querySelector('.myelement');
if (myelement != null) {
  let myelementText = myelement.textContent;

  console.log(myelementText);
}
<ul>
    <li>Element</li>
    <li>Element</li>
    <li>Element</li>
    <li>Element</li>
</ul>