2

我必须禁用我的 Java 脚本代码中的一些元素,哪个更适合通过 Java 脚本禁用元素:

 1.   document.getElementById("eleId").disabled = true;

 2.   document.getElementById("eleId").disabled = "disabled";

请任何人描述这些功能,它们之间有什么区别?

4

5 回答 5

4

两种情况都有效。

在情况 1 中,您将属性“禁用”设置为布尔值“真”。在情况 2 中,您将属性“禁用”设置为字符串值“禁用”。

如果您打算通过 HTML 设置此值,通常您可以只在列出的标签上设置“禁用”属性即可。但是为了符合 XHTML/XML 样式,您将使用格式正确的属性 disabled="disabled"。

基本上,如果浏览器检测到存在“禁用”属性,(我认为)它将禁用该元素。

编辑 另一个 SO 用户(RobG)指出,这会设置相关元素的“DOM 属性”而不是“属性”。

在处理“getElementById”的结果时,您正在处理文档结构的表示。当您进行修改时,您是在“对象模型”上设置属性。用 Java 编程了这么久,我通常会互换术语属性和属性。在说“它设置属性”的情况下,我是不正确的。说我要设置“属性”意味着我会修改文档(HTML)以更改实际源中“禁用”的值。这实际上是在修改对象树,设置代表对象的属性。

于 2012-12-07T06:05:54.070 回答
2

在 XHTML 中,属性最小化是被禁止的,disabled 属性必须定义为disabled="disabled"

在普通的 HTML 中,我们可以像disabled=true

于 2012-12-07T06:05:35.937 回答
2

从技术上讲,如果属性只有一个禁用属性,它应该禁用它。虽然对于 XHTML,它必须是 disabled="disabled"

于 2012-12-07T06:06:38.067 回答
2

HTML disabled 属性是布尔值,它的存在将相关的 DOM 属性设置为true并用HTML 4.01HTML5编写:

<... disabled ...>

在 XML 中,属性必须有值,所以对于XHTML,它是这样写的:

<... disabled="disabled" ...>

但是实际值无关紧要,它仍然可以用作布尔属性。

在 DOM 中,元素属性通常反映相关的属性值,但并非总是如此。setAttribute在工作方式和工作方式上也存在不一致getAttribute,因此在 javascript 中最好使用 DOM 属性,除非有充分的理由使用属性(例如 data-attribute)。

要禁用元素,disabled应将 DOM 属性设置为 boolean true,要“取消禁用”元素,应将属性设置为false。将任何字符串分配给该值将导致true通过类型转换将其设置为。

于 2012-12-07T06:30:59.670 回答
1

人们往往会对 xhtml 属性值感到困惑:

<input id="test" disabled="disabled"/>

和 javascript DOM api:

inputElement.disabled = true;

并将 javascript 值设置为字符串。它在技术上不正确,但它工作正常。

于 2012-12-07T06:09:01.700 回答