其中一个比另一个更优选吗?为什么?性能如何 - 如果这些被召唤数千次?
A) element.setAttribute("disabled", true);
B) element.disabled = true;
它们似乎都禁用了FF 4中的输入[text]元素。
答案 0 :(得分:4)
一般......
使用属性。很长一段时间(直到版本7或8 IIRC)Internet Explorer的setAttribute
实施严重破坏,将属性设置为属性(经典的失败点是class
,因为没有{ {1}}属性(class
)。
特别是在这种情况下...... className
是错误的。它应该是element.setAttribute("disabled", true);
答案 1 :(得分:2)
element.setAttribute("disabled", some_bool)
不会像您认为的那样有效。特别是,标准方面,disabled
就是所谓的boolean attribute;它的存在,无论其价值如何,都是如此。 disabled=""
,disabled="disabled"
,disabled="true"
甚至disabled="false"
(!!!)在大多数浏览器中都表示相同的含义。 (虽然最后两个实际上是无效的HTML,但是出于真实目的,大多数浏览器会认为它们等同于disabled="disabled"
。包括Big Four中的每一个。)通过设置值 - 任何值将布尔属性设置为true ,即使它是假的 - 你通过完全删除属性将它设置为假。
如果您关心属性的实际字符串值(在这种情况下您不应该这样做),特别是如果该属性尚未通过DOM公开(也就是说,它没有相应的属性) ),然后使用(get/set)Attribute
。在大多数情况下(特别是如果你关心它如何影响元素,就像在你尝试禁用元素的情况下那样),使用DOM属性。
答案 2 :(得分:0)
IE需要使用setAttribute
设置一些属性,但不是全部。我没有列表,你只需检查它是否有效。此外,使用setAttribute
会将属性放在DOM中,因此可以在执行查看源时显示该属性。
答案 3 :(得分:0)
只有一个提示:element.setAttribute('class',xxx)在某些版本的IE中不起作用。
首选element.className = xxx