我想获取一个节点并识别其节点类型(例如: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>