Chinaunix首页 | 论坛 | 博客
  • 博客访问: 199364
  • 博文数量: 163
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-08 11:41
文章分类

全部博文(163)

文章存档

2011年(1)

2009年(162)

我的朋友

分类:

2009-06-17 16:18:52

javaScript 操作DOM的第一件事就是找到要修改的元素。前面已经提到,我们开始只能得到根节点的一个引用,它保存在全局变量document中。DOM中的每一个节 点都是document的子节点(或孙节点、曾孙节点等等),但是要在大型的复杂文档中,一步一步地缓慢搜寻是件体力活。幸运的是,我们可以走一些捷径。 最常用的方法就是给元素附加唯一的ID。在代码清单2-5的onload()函数中,我们想要寻找两个元素:段落元素,我们为它设置样式;空的标签,我们 为它添加内容。如你所见,已经在html中为它们附加了唯一的ID属性,即:任何一个DOM节点都可以分配一个ID,用来在程序中通过一个函数调用获得这个节点的引用,无论它在文档中的什么位置:
  var hello=document.getElementById('hello');

  注意,这是Document对象的一个方法。在一个如上所述的简单情况中(以及在很多复杂的情况中),可以通过document访问当前的 Document对象。如果你使用了IFrame(我们将会在后面讨论),那么可能需要跟踪多个Document对象,并确定正在查询的是哪个 Document对象。

  在一些情况下,我们确实需要一步一步地搜索DOM树。因为DOM节点是以树形结构来组织的,每一个DOM节点都只有不多于一个的父节点,但是可 以有任意多个子节点。可以通过parentNode和childNodes来访问它们。parentNode返回另外一个DOM节点,而 childNodes返回一个JavaScript节点数组,可以对其遍历,即:
  var children=empty.childNodes;
  for (var i=0;i< SPAN>
  ...
  }

  即便在文档中的某个节点上没有附加唯一ID,我们仍有第三种方法可以方便地定位节点。那就是,使用 getElementsByTagName()方法,基于HTML标签的类型搜索DOM节点。例 如,document.getElementsByTagName("UL")会返回一个包含文档中所有标签的数组。

  这些方法对于操作那些我们几乎无法控制的文档[2]来说是很有用的。作为通常的规则,使用getElementById()要比使用getElementsByTagName()更加安全,因为前者对于文档结构和顺序的假设更少一些,这样文档结构可以独立于代码而变化。

阅读(1038) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~