文本节点对应的instanceof目标是什么?

jxr*_*mos 2 javascript

我无法弄清楚相应的instanceof测试适合文本节点。在下面的节点列表示例中,有我可以跳过的表格和中断

child = paymentInfo[i];
if (child instanceof HTMLBRElement || child instanceof HTMLTableElement) {
    continue;
}
Run Code Online (Sandbox Code Playgroud)

是否没有类似的测试来评估文本节点?似乎在 HTMLTextAreaElement 上进行实验并不是正确的选择。

具有各种节点类型的 NodeList,包括文本元素

有一个解决方法是检查我找到的节点名称,但最好使代码与其他条件保持一致。

paymentInfo[0].nodeName == "#text"
true
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 5

关联的构造函数是Text( window.Text),因此您可以使用instanceof Text

const foo = document.querySelector('#foo');
const textNode = foo.childNodes[0];
console.log(textNode instanceof Text);
Run Code Online (Sandbox Code Playgroud)
<div id="foo">someText</div>
Run Code Online (Sandbox Code Playgroud)

如果您想要引用父元素并希望查看子元素,同时跳过子文本节点,您可以使用.children获取子元素的 HTMLCollection (而不是.childNodes,它为您提供子文本节点和子元素的 NodeList )儿童元素):

const foo = document.querySelector('#foo');
const children = foo.children;
console.log(children.length);
console.log(children[0]);
Run Code Online (Sandbox Code Playgroud)
<div id="foo">
  someText
  <div id="someChild">someChild</div>
</div>
Run Code Online (Sandbox Code Playgroud)