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
2010-03-31 16:09:09
Thanks, it works well!:)
T_t
2010-04-02 10:54:07