要使用getAttribute(),还是不要使用getAttribute():这就是问题所在

9 javascript attributes members setattribute getattribute

可能重复:
JavaScript setAttribute vs .attribute =
javascript dom,如何处理"特殊属性"作为属性?

很多时候,在Usenet的论坛或地方,我被一些人(当批评我的代码时)告诉我,而不是说,例如var link = a.href我应该使用var link = a.getAttribute('href');.并且在想要分配时使用其互补的setAttribute().

他们说这是正确的做法,我错了,等等等等......我通常不会注意那些.当我问为什么没有人给出真正的答案时.

现在我很好奇在哪些情况下更适合使用其中一种或另一种.

在什么情况下更适合说var link = a.getAttribute('href');而不是var link = a.href
在什么情况下,我使用setAttribute()来分配,而不是直接通过其标识符为成员赋值?即:`a.href ='someURL';

Rob*_*obG 13

每当有人推荐练习时,他们应该总是证明这些建议是正确的.

不使用getAttributesetAttribute的原因是IE版本,包括8版本,至少在这些DOM方法的实现中存在错误.此外,浏览器在更改DOM属性以响应get/setAttribute的使用方面存在差异.

但是,浏览器在DOM属性方面非常一致,因此如果使用DOM属性,编写跨浏览器代码要简单得多.唯一需要注意的是,某些浏览器不会为非标准HTML属性创建DOM属性,但它们都会使用属性设置它们.

另外一个好处是DOM属性访问比使用函数调用get/setAttribute要快得多.

HTML5正在尝试标准化其中一些行为,但HTML5的问题在于它不是W3C标准(可能永远不会),并且它是一个"活的规范",它不仅试图记录浏览器的行为(更多或但是,作者希望他们在不区分两者的情况下做些什么.因此,虽然它作为一种"内置"规范和愿望清单是有用的,但它作为标准是无用的.

2017年7月编辑

W3C已经发布了一段时间的HTML 5规范(包括编号版本和更改列表),WHATWG也发布了几乎每日更新的HTMLDOM标准,但没有说明发生了什么变化.其中一方可能最终放弃.