js中的节点类型

只读属性 Node.nodeType 表示的是该节点的类型,比如 元素, 文本 和 注释。

常量描述
Node.ELEMENT_NODE1一个 元素 节点,例如 <p> 和 <div>。
Node.TEXT_NODE3Element 或者 Attr 中实际的 文字。
Node.CDATA_SECTION_NODE4一个 CDATASection,例如 <!CDATA[[ … ]]>。
Node.PROCESSING_INSTRUCTION_NODE7一个用于XML文档的 ProcessingInstruction (en-US) ,例如 <?xml-stylesheet ... ?> 声明。
Node.COMMENT_NODE8一个 Comment 节点。
Node.DOCUMENT_NODE9一个 Document 节点。
Node.DOCUMENT_TYPE_NODE10描述文档类型的 DocumentType 节点。例如 就是用于 HTML5 的。
Node.DOCUMENT_FRAGMENT_NODE11一个 DocumentFragment 节点。

用法

	const node = document.documentElement.firstChild
	if (node.nodeType !== Node.COMMENT_NODE) {
		console.log('第一行没有注释!')
	}
	const div = document.createElement('div')
	div.textContent = '我是文本内容'
	console.log(div.nodeType === Node.ELEMENT_NODE)   			// true
	console.log(div.firstChild.nodeType === Node.TEXT_NODE)   	// true
	// 递归方式:取出某个元素下所有文本节点
    function getTextNodeList(dom) {
        let textNodes = []
        const handle = dom => {
            const nodeList = dom.childNodes
            nodeList.forEach(c => {
                if (c.nodeType === Node.TEXT_NODE) {
                    textNodes.push(c)
                } else {
                    handle(c)
                }
            })
        }
        handle(dom)
        return textNodes
    }

	// 循环方式:取出某个元素下所有文本节点
   function getTextNodeList(dom) {
        let nodeList = [...dom.childNodes]
        let textNodes = []
        while (nodeList.length) {
            const node = nodeList.shift()
            if (node.nodeType === Node.TEXT_NODE) {
                textNodes.push(node)
            } else {
                nodeList.unshift(...node.childNodes)
            }
        }
        return textNodes
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值