表达式喜欢Element.getAttribute("id")并且Element.id返回相同的东西。
Element.getAttribute("id")
Element.id
当我们需要HTMLElement对象的属性时,应该使用哪一个?
这些方法和getAttribute()和有没有跨浏览器的问题setAttribute()?
getAttribute()
setAttribute()
还是直接访问对象属性与使用这些属性方法之间的性能影响?
getAttribute检索DOM元素的 属性 ,而el.id检索此DOM元素的 属性 。他们不一样。
getAttribute
el.id
大多数情况下,DOM属性与属性同步。
但是,同步 不能保证相同的值 。一个典型的例子是间el.href和el.getAttribute('href')对一个锚定元件。
el.href
el.getAttribute('href')
例如:
<a href="/" id="hey"></a> <script> var a = document.getElementById('hey') a.getAttribute('href') // "/" a.href // Full URL except for IE that keeps '/' </script>
发生这种现象的原因在于,根据W3C,href属性必须是格式正确的链接。大多数浏览器都遵守此标准(猜测谁不这样做?)。
input的checked属性还有另一种情况。DOM属性返回true,false而属性返回字符串"checked"或空字符串。
input
checked
true
false
"checked"
然后,有些属性 仅单向 同步。最好的例子是元素的value属性input。通过DOM属性更改其值不会更改属性(编辑:检查第一个注释以更精确)。
value
由于这些原因,我建议您继续使用DOM 属性 ,而不要使用属性,因为它们的行为在浏览器之间是不同的。
实际上,只有两种情况需要使用属性: