if(e[i].nodeType!=1){//如果不是元素节点,则追加其文本值 t+=e[i].nodeValue+" "; }else{ t+=text(e[i].childNodes);//否则,继续递归调用 } } return t; } var obj=document.getElementById('test'); var text=text(obj); document.write(text); //--> script> 通常,我们使用previousSibling,nextSibling,firstChild,lastChild等等来遍历DOM文档,但是,往往会将文本节点也遍历出来,一般情况下,我们不大需要遍历文本节点。所以,这里,我们可以使用自定义的几个函数将previousSibling,nextSibling,firstChild,lastChild封装起来,跳过遍历到的文本节点,而直接取得元素节点 查找节点的几个替代函数 代码如下: previousSibling,nextSibling,firstChild,lastChild和parentNode的替代函数 //查找当前元素的前一个兄弟元素节点(注意是元素节点而不是文本节点) function prev(o){ do{ o=o.previousSibling; }while(o.nodeType!=1 && o);//如果前一个兄弟节点是元素节点则跳出循环 return o; } //查找当前元素的下一个兄弟元素节点(注意是元素节点而不是文本节点) function next(o){ do{ o=o.nextSibling; }while(o.nodeType!=1 && o);//如果下一个兄弟节点是元素节点则跳出循环 return o; } //查找元素的第一个子元素的函数 function first(o){ o=o.firstChild; return o.nodeType!=1 && o ? next(o) : o;//如果第一个子节点是元素节点,则返回,否则调用next函数,查找下一个兄弟元素 } //查找元素的最后一个子元素的函数 function last(o){ o=o.lastChild; return o.nodeType!=1 && o ? prev(o) : o;//如果最后一个子节点是元素节点,则返回,否则调用prev函数,查找前一个兄弟元素 } //--> script> 大部分的WEB开发者在大多数情况下仅仅需要遍历DOM元素而非相邻的文本节点
所以,我们可以自己定义几个函数用于替代previousSibling,nextSibling,firstChild,lastChild和parentNode
a标签1 a标签2 a标签3 a标签4 var obj=document.getElementById('test'); document.write("使用nextSibling返回的div元素的下一个兄弟节点,①节点类型:"+obj.nextSibling.nodeType+"②节点名称:"+obj.nextSibling.nodeName+" "); document.write("使用自定义的next函数返回的div元素的下一个兄弟元素,①节点类型:"+next(obj).nodeType+"②节点名称:"+next(obj).nodeName+" "); document.write("使用firstChild返回的div元素的第一个子节点,①节点类型:"+obj.firstChild.nodeType+"②节点名称:"+obj.firstChild.nodeName+" "); document.write("使用自定义的first函数返回的div元素的第一个子元素,①节点类型:"+first(obj).nodeType+"②节点名称:"+first(obj).nodeName+" "); document.write("使用lastChild返回的div元素的最后一个子节点,①节点类型:"+obj.lastChild.nodeType+"②节点名称:"+obj.lastChild.nodeName+" "); document.write("使用自定义的last函数返回的div元素的最后一个子元素,①节点类型:"+last(obj).nodeType+"②节点名称:"+last(obj).nodeName+" "); //--> script> 获取表单对象的 7 种方式 多种获取表单对象的方式 代码如下: 获取表单对象的 7 种方式 document.write("方式1:"+document.myform.test.value+" ");//经常用 document.write("方式2:"+document.forms[0].test.value+" ");//通过下标索引访问,较常用 document.write("方式3:"+document.forms['myform'].test.value+" "); //方式3和方式4可以切换的,这是源于js访问对象的方式可以采用数组形式来访问的缘故 document.write("方式4:"+document.forms.myform.test.value+" "); document.write("方式5:"+document['myform'].test.value+" "); document.write("方式6:"+document.forms.item(0).test.value+" ");//注意 是item(),不是item[] document.write("方式7:"+document.forms.item('myform').test.value+" "); //--> script> 使用javascript实现全选,反选,全不选的功能 代码如下: 全选,反选,全不选 for (var i=0;i<20;i++){ document.write('测试'+(i+1)+' '); } var o=document.getElementsByName("sel[]");//全局变量 //全选 function selall(){ for(var i=0;io[i].checked="true"; } } //全不选 function noselall(){ for(var i=0;io[i].checked=""; } } //反选 function invert(){ for(var i=0;iif(o[i].checked==true){ o[i].checked=""; }else{ o[i].checked=true; } } } //--> script> 全选 全不选 反选 鼠标移上去,显示子栏目列表
代码如下: 显示隐藏菜单 操作菜单 Menu1 Menu2 Menu3 子菜单1 子菜单1 子菜单1 子菜单1 子菜单2 子菜单2 子菜单2 子菜单2 子菜单3 子菜单3 子菜单3 子菜单3 var menu=document.getElementById("menu").getElementsByTagName("li"); var submenu=document.getElementById('submenu').getElementsByTagName('li'); function change(num){ for (var i=0;iif(i==num){ menu[num].className="highlight"; submenu[num].style.display="block"; }else{ menu[i].className=""; submenu[i].style.display="none"; } } } //--> script> 通过for...in循环语句,可以遍历出某个对象中的属性 比如,我们想要看下document对象中的所有属性名和属性值,可以使用如下所示的代码: 代码如下: View Code
遍历document文档对象的所有属性 for (var pro in document){ document.write("document."+pro+"="+document[pro]+" "); } //--> script> 同理,我们也可以用以上方法遍历window对象,location对象,history对象等的属性,当然,也可以用来遍历自定义对象的属性