<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<script type="text/javascript">
<!--
function getText(n){
var strings = [];
getString(n, strings);
return strings.join(""); function getString(n, strings){
if(n.nodeType == 3){
strings.push(n.data);
}
else if(n.nodeType == 1){
for(var m = n.firstChild; m!=null; m = m.nextSibling){ // 主要就是这一个循环 ,谁能给我讲清楚是怎么运行机制而遍历所有的
getString(m, strings);
}
}
}
}
//-->
</script>
</head> <body onload = "alert(getText(document.getElementById('ospan')))">
this is a <i>Simple</i>document
<div>
<span id="ospan">
<span>IT's<b>Strong</b><b>haha</b>M</span>
</span>
</div>
</body>
</html>主要就是那个循环 它每次循环都递归了 那什么时候能运行到m = m.nextSibling这句啊?
解决方案 »
- 关于automation服务器不能创建对象求助
- js如何设置cookies的跨文件夹?
- 日期控件针对火狐浏览器出现的问题
- 在不知道文本框控件数量的情况下如何循环判断所有文本框中所填的值是否正确?
- 如何保护Javascript
- 怎样重新加载javascript?我发现用Maxthon浏览时当链接在新窗口中打开时这句没有加载,导致很多错误:找不到函数。而在当前窗口中打开就没
- 请大家帮忙改一下这句IFRAME的错误!谢谢
- 如何实现展开/收缩的菜单?
- 如何在下拉列表中放入图片,请高手赐教,谢谢···
- 有没有方法使<input type=text>的值改变后就激活一个按钮呢?!
- 运行显示网页上有错误,到底在哪里啊?
- js中 Image对象打印问题(数组与对象结合)
这个跟for(var i=0;i<n;i++)本质上是一样的,换成while可能更清晰
var m=n.firstChild;//初始化m 假设n是“1”,m即为“2”
while(m!=null){//循环条件
//循环体
m=m.nextSibling//迭代 m为它的下一个同辈(由“2”到“3”,“3”到“fdkajf”,最后为null)
}
<div id=1><div id=2><div id=3>fdkajf</div></div></div>功能是找到n的文本的data
========>
重新调用函数也有结束的时候,结束的时候就是继续走nextSibling的时候。
<span>
A<b>B</b><b>C</b>
</span>
<span>
D
</span>
</span>我写下流程老大们看下
首先最外层的span走到nodeType==1的分支 然后m =n.firstChild即是第二个span然后 m!=null
则走进递归分支 重新走getString函数 由于是span又走入nodeType ==1分支 取得了m为文本
由于m!=null继续递归这会是文本nodeType==3了 所以不走elseif了然后走nextSibling一直将第一个span
里的文本走完 但第二个span就不能走了啊
<span id=s11>
A<span id=s111>b</span>
</span>
<span id=s12> </span>
</span>执行顺序
s1->s11->A-<s111->s12
s1 : nodetype = 1
for循环两个子节点。
第一个先 即:s11 类型 1 再循环 还是两个子节点 第一个A类型为3结束 第二s111类型为1继续循环有一个子节点b 类型为3 结束。第二个就是s12 了,与上同。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<SCRIPT LANGUAGE=javascript>
<!--
window.onload=function(){
var o=document.getElementById('ospan')
alert(o.innerText||o.textContent)
}
//-->
</SCRIPT> </head> <body>
this is a <i>Simple</i>document
<div>
<span id="ospan">
<span>IT's<b>Strong</b><a href="#">AAAAAAAAAAAAAAAAAAAAAAAAAAA</a><b>haha</b>M</span>
</span>
</div>
</body>
</html>