9

我刚刚注意到,如果我为 html 元素提供自定义属性,例如:

<input type="button" id="my_button" custom_attr="custom_attr_text" value="value_text" />

然后我可以像这样检索它:

document.getElementById("my_button").getAttribute("custom_attr");

它会回来"custom_attr_text",但如果我这样做

document.getElementById("my_button").custom_attr;

然后它返回undefined

我还注意到,使用内置属性(例如valueid),上述两种方法都可以正常工作!有人可以解释为什么会这样吗?

4

1 回答 1

19

只有某些标准属性直接映射到属性。这不是非标准(自定义)属性的定义行为。

使用自定义属性的前向兼容方式是在它们前面加上data-.

<input ... data-custom_attr="custom_attr_text" ... />

然后它们在兼容 HTML5 的浏览器中可用,如下所示:

element.dataset.custom_attr

但在旧版浏览器中,您仍然需要使用.getAttribute().

于 2013-02-21T19:54:08.340 回答