views:

97

answers:

1

In a web page,i want to get every visible text in a textnode.I don't want to put all the result into one array.I mean, when i meet a visible text, i will do something else. How could i achieve it?

+2  A: 

I guess you want something like this:

<script type="text/javascript">
function textnodes(){
    function iterate(node){
        var nodes=node.childNodes
        var len=nodes.length
        for(var a=0;a<len;a++){
            if(nodes[a].nodeType==3){
                if(!nodes[a].nodeValue.match(/^[\s]*$/)){
                    alert(nodes[a].nodeValue) //Insert your code here.
                }
            }
            else{
                if(nodes[a].nodeName.toLowerCase()!="script"){
                    iterate(nodes[a])
                }
            }
        }
    }
    iterate(document.body)
}
textnodes()
</script>

The script as it is might be a bit overzealous, you get along a lot of invisible text nodes, you can sort those out if you don't need them.

Edit: Modified to sort out invisible nodes since you specifically requested only visible nodes.

eBusiness
Thanks, it works well!:)
T_t