getElementsByTagName() equivalent for textNodes

前端 未结 7 914
日久生厌
日久生厌 2020-11-22 06:33

Is there any way to get the collection of all textNode objects within a document?

getElementsByTagName() works great for Elements, but

7条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-22 07:22

    var el1 = document.childNodes[0]
    function get(node,ob)
    {
            ob = ob || {};
    
            if(node.childElementCount)
            {
    
                ob[node.nodeName] = {}
                ob[node.nodeName]["text"] = [];
                for(var x = 0; x < node.childNodes.length;x++)
                {   
                    if(node.childNodes[x].nodeType == 3)
                    {
                        var txt = node.childNodes[x].nodeValue;
    
    
                        ob[node.nodeName]["text"].push(txt)
                        continue
                    }
                    get(node.childNodes[x],ob[node.nodeName])       
                };  
            }
            else
            {
                ob[node.nodeName]   = (node.childNodes[0] == undefined ? null :node.childNodes[0].nodeValue )
            }
            return ob
    }
    
    
    
    var o = get(el1)
    console.log(o)
    

提交回复
热议问题