如何调用和打印node类型名称而不仅仅是数字(例如:"ELEMENT_NODE")?



我想获取一个节点并识别其节点类型(例如:1,2,3等( 以及节点类型名称(例如:ELEMENT_NODE、TEXT_NODE等(,以便在控制台中显示为句子:

嗨,我是"[object HTMLBodyElement]"。 他们说我是"1", 称为"ELEMENT_NODE"的节点类型。 我以"身体"的形状出现

好的,我找到了一种列出节点类型及其名称的方法:

for(let key in Node){
console.log(key, ' = '+Node[key]);
};

但是我太缺乏经验了,无法将此代码与下面的代码混合在一起:

const bodyIs = document.body;
console.log(`Hi, I am ${bodyIs}. 
They say I am a "${bodyIs.nodeType}", 
a Node Type known as "${bodyIs.nodeKey}". 
I come in the shape of a "${bodyIs.nodeName}."`);

当然没有".nodeKey"这样的东西,所以我当然得到这个:

嗨,我是"对象HTMLBodyElement]"。他们说我是"1",节点类型 称为"未定义"。我以"身体"的形状出现。

我该怎么做才能得到"未定义"而不是"未定义",而是得到"ELEMENT_NODE"?

看起来您需要手动创建查找表:

const nodeTypeName = {
1: "ELEMENT_NODE",
2: "ATTRIBUTE_NODE",
3: "TEXT_NODE",
4: "CDATA_SECTION_NODE",
//...
};
console.log(nodeTypeName[ document.body.nodeType ])

您可以使用 Object.keys 访问任何对象的键列表。由于 Node 是一个对象,只需使用其键列表并使用 nodeType 的值访问键名。

let bodyIs = document.getElementsByTagName('body')[0];
console.log(bodyIs, Object.keys(Node)[bodyIs.nodeType])
<html>
<head />
<body />
</html>

相关内容

最新更新