JS节点查找笔记

要想获得未曾拥有的东西,就必须付出未曾有过的努力。

习惯了JQ的方便DOM节点查询,或许你已经忘记了js原生的一些查询操作了吧,下面列出js的节点查询,方便要用到的时候能快速找到:

html结构:

< div  class = "main" >
   < div  class = "div1" ></ div >
   < div  id = "oDiv"  class = "div2"
     < h1 >我是h1节点</ h1 >
     < p >我是p节点</ p >
     < span >我是span节点</ span >
   </ div >
   < div  class = "div3" ></ div >
</ div >

js:

var  s = document.getElementById( "oDiv" );
 
var  chils= s.childNodes;   //得到s的全部子节点——3个,分别是h1、p、span
 
var  par=s.parentNode;    //得到s的父节点—— class为main的div节点
 
var  ns=s.nextSbiling;    //获得s的下一个兄弟节点—— class为div3的div节点
 
var  ps=s.previousSbiling;   //得到s的上一个兄弟节点—— class为div1的div节点
 
var  fc=s.firstChild;    //获得s的第一个子节点—— h1节点
 
var  lc=s.lastChile;    //获得s的最后一个子节点—— span节点

这里要注意下,因为js获取上一个、下一个节点有空文本是否算为一个节点的兼容性问题(FF会将空白、换行等文本信息也当做childNodes中的一员,而IE则会忽略它们,只将DOM节点当做是childNodes的一员),所以这里要先过解决这个兼容性问题:

比如处理下一个节点的兼容:

function  getNextNode(node){
     node= typeof  node== "string" ?document.getElementById(node):node;
     var  nextNode=node.nextSibling;
     if (!nextNode) return  null ;
     if (!document.all){   //FF不识别document.all
         while ( true ){
             if (nextNode.nodeType==1){
                 break ;
             } else {
                 if (nextNode.nextSibling){
                     nextNode=nextNode.nextSibling;
                 } else {
                     break ;
                 }
             }
         }
     }
     return  nextNode;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值