判断DOM节点的nodeType属性是识别节点类型的基础操作,主要通过以下方式实现:
一、直接数值比较法
通过节点的nodeType属性与常量数值比较:
const node = document.getElementById('example');
if (node.nodeType === 1) {
console.log('元素节点'); // 如<div>、<p>
} else if (node.nodeType === 3) {
console.log('文本节点'); // 如标签内的文字
} else if (node.nodeType === 8) {
console.log('注释节点'); // 如<!-- 注释 -->
}优点:兼容所有浏览器,包括旧版IE
二、常量命名法(现代浏览器推荐)
使用Node对象定义的常量(如Node.ELEMENT_NODE)提高可读性:
if (node.nodeType === Node.ELEMENT_NODE) {
console.log('元素节点');
}注意:IE8及以下不支持Node常量,需降级为数值比较
三、常见节点类型对照表
四、实际应用场景
遍历子节点时过滤非元素节点
const children = parent.childNodes;
for (let node of children) {
if (node.nodeType === 1) { // 仅处理元素节点
console.log(node.tagName);
}
}动态插入内容前检查节点类型
确保操作对象是元素节点而非文本或注释节点
五、注意事项
属性节点需通过
getAttributeNode()获取,直接访问元素属性不会返回属性节点跨浏览器兼容性:优先使用数值比较法,若需常量命名需检测
Node对象是否存在