javascript 获​取​H​T​M​L​ ​D​O​M​父​,​子​,​临​近​节​点

在Web应用程序特别是Web2.0程序开发中。常常要获取页面中某个元素,然后更新该元素的样式、内容等。怎样获取要更新的元素,是首先要解决的问题。令人欣慰的是,使用JavaScript获取节点的方法有非常多种,这里简单做一下总结(下面方法在IE7和Firefox2.0.0.11測试通过): 
        1. 通过顶层document节点获取: 
            (1) document.getElementById(elementId):该方法通过节点的ID。能够准确获得须要的元素。是比較简单快捷的方法。

假设页面上含有多个同样id的节点。那么仅仅返回第一个节点。 
             现在。已经出现了如prototype、Mootools等多个JavaScript库,它们提供了更简便的方法:$(id),參数仍然是节点的id。

这种方法能够看作是
document.getElementById()的第二种写法。只是$()的功能更为强大,详细使用方法能够參考它们各自的API文档。

 
            (2)document.getElementsByName(elementName):该方法是通过节点的name获取节点,从名字能够看出。这种方法返回的不是一个节点元素,而是具有相同名称的节点数组。

然后,我们能够通过要获取节点的某个属性来循环推断是否为须要的节点。 
            比如:在HTML中checkbox和radio都是通过同样的name属性值,来标识一个组内的元素。假设我们如今要获取被选中的元素。首先获取改组元素。然后循环推断是节点的checked属性值是否为true就可以。 
           (3)document.getElementsByTagName(tagName):该方法是通过节点的Tag获取节点,相同该方法也是返回一个数组,比如:

document.getElementsByTagName('A')将会返回页面上全部超链接节点。在获取节点之前,一般都是知道节点的类型的,所以使用该方法比較简单。可是缺点也是显而易见,那就是返回的数组可能十分庞大,这样就会浪费非常多时间。那么,这种方法是不是就没实用处了呢?当然不是,这种方法和上面的两个不同,它不是document节点的专有方法,还能够应用其它的节点,以下将会提到。

        

2、通过父节点获取: 

            (1)parentObj.firstChild:假设节点为已知节点(parentObj)的第一个子节点就能够使用这种方法。

这个属性是能够递归使用的,也就是支持
parentObj.firstChild.firstChild.firstChild...的形式。如此就能够获得更深层次的节点。 
           (2)parentObj.lastChild:非常显然,这个属性是获取已知节点(parentObj)的最后一个子节点。与firstChild一样,它也能够递归使用。 
           在使用中。假设我们把二者结合起来。那么将会达到更加令人兴奋的效果,即:parentObj.firstChild.lastChild.lastChild... 
          (3)parentObj.childNodes:获取已知节点的子节点数组,然后能够通过循环或者索引找到须要的节点。 
          注意:经測试发现,在IE7上获取的是直接子节点的数组。而在Firefox2.0.0.11上获取的是全部子节点即包含子节点的子节点。 
          (4)parentObj.children:获取已知节点的直接子节点数组。 
          注意:经測试,在IE7上,和childNodes效果一样。而Firefox2.0.0.11不支持。

这也是为什么我要使用和其它方法不相同式的原因。因此不建议使用。 
          (5)parentObj.getElementsByTagName(tagName):用法不再赘述,它返回已知节点的全部子节点中类型为指定值的子节点数组。

比如:

parentObj.getElementsByTagName('A')返回已知的子节点中的全部超链接。

   

3、通过临近节点获取:

   (1)neighbourNode.previousSibling:获取已知节点(neighbourNode)的前一个节点。这个属性和前面的firstChild、lastChild一样都似乎能够递归使用的。 
    (2)neighbourNode.nextSibling:获取已知节点(neighbourNode)的下一个节点,相同支持递归。    

4、通过子节点获取: 
    (1)childNode.parentNode:获取已知节点的父节点。  
   上面提到的方法。仅仅是一些主要的方法,假设使用了Prototype等JavaScript库,可能还获得其它不同的方法。比如通过节点的class获取等等。只是,假设可以灵活运用上面的各种方法。相信应该可以应付大部分的程序。


參考:http://blog.csdn.net/bradwoo8621/article/details/1747502

转载于:https://www.cnblogs.com/gavanwanggw/p/6992096.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值