有许多人说,既然HTML可以直接使用属性名称进行访问,就像这样,假如访问图片的地址,可以使用this.src,那为什么还要使用getAttribute("")方法呢?getAttribute("")写起来总给人一种多写了代码的感觉,毕竟这个单词就挺长的。 下面我来说一下getAttribute("")与传统的写法有什么不同。this.src这种写法可以称之为HTML-DOM,我为什么这么说呢,是因为这种写法只适用于HTML文档中。而this.getAttribute("src")这种写法可以称之为W3C-DOM,或者标准DOM,理论上this.getAttribute("src")适用于使用任何一种标记语言写出来的任何一份文档,比如说我们熟悉的XML文档。在解析XML的时候,使用this.getAttribute("src")可以获得某一个节点的src属性,this.src写法却是非法的,不能获取任何值。有的人可能会问:为什么说是理论上呢?因为W3C只是提供了一个接口,至于各个代理厂商如何实现和是否愿意实现就是另一回事了,所以说是理论上。  this.getAttribute("src")相对于this.src来说,还有一个优势,那就是getAttribute可以获取自定义属性,比如说,你想给<a>起一个中文名字,你定义了一个nameCn属性,this.getAttribute("nameCn")可以轻松获取到nameCn属性,如果使用this.nameCn会得到一个undefined。这个有时候会对你起到意想不到的帮助的。 总结如下:this.src这种方式只能获取HTML文档中元素本身已经有的属性。this.getAttribute("src")可以实现以上功能,除此之外,最常见的就是获取XML文档中的元素的自定义属性和HTML文档中的自定义属性。 初学者比较疑惑的是认为DOM都一样。实际上我们所遇到的DOM基本上可以分为三种:HTML-DOM、XML-DOM、标准DOM。标准DOM在操作文档的时候是通用的,其它DOM只是为了方便操作特定类型的文档提供了一些更加便利的操作方法。 
像类似getAttribute的方法还有很多,这里就不一一列举了。W3C提供的标准DOM接口基本上都是这样的方法。

解决方案 »

  1.   

    嗯,说的很详细了,就是不同的DOM的实现的区别。
    DOM是Document Object Model文档对象模型的缩写,是W3C制定的一套规范。
    依据DOM的规范,DOM是一种与浏览器、平台、语言无关的接口。DOM的级别
    DOM level 1, 分成DOM level 1 Core(就是平常说的XML DOM) 和DOM Level 1HTML
    DOM level 2, 分成
        DOM level 2 Core
        DOM level 2 Views
        DOM level 2 Events
        DOM level 2 Style
        DOM level 2 Traversal and Range Specification
        DOM level 2 HTMLDOM Level 3, 目前还没有哪个浏览器完全实现DOM Level 3 HTML规范。
    this.getAttribute 是DOM level 1 Core实现的方法, 而this.src是HTML DOM的内容。要特别注意的事HTML DOM 获取HTML 规定的属性或节点, XML DOM 可任何属性或节点。。          
      

  2.   

         学习了,讲得不错,还有关于setAttribute,因为实践操作中,经常会遇到它,有些浏览器读取属性(不管是不是自定义都OK),但是给它设置值的时候就出问题了,好象IE还是FF无法通过普通方法对属性设置值,或自定义属性,所以这方面也希望获得了解!期待楼主下期关于这方面的讲解,谢谢!
      

  3.   

    以后都用getAttribute了,给自己留个退路