问题
I have just noticed, that if I give a custom attribute to an html element, for example:
<input type="button" id="my_button" custom_attr="custom_attr_text" value="value_text" />
then i can retrieve it like this:
document.getElementById("my_button").getAttribute("custom_attr");
and it will return "custom_attr_text"
, but if I do
document.getElementById("my_button").custom_attr;
then it returns undefined
!
I also noticed that with a built in attribute (for example value
or id
) both of the above works fine!
Could somebody please explain why is this happening?
回答1:
Only certain standard attributes are directly mapped to properties. This is not the defined behavior for non-standard (custom) attributes.
The forward compatible way of using custom attributes is to prefix them with data-
.
<input ... data-custom_attr="custom_attr_text" ... />
Then they become available in HTML5 compliant browsers as:
element.dataset.custom_attr
But in legacy browsers, you'll still need to use .getAttribute()
.
来源:https://stackoverflow.com/questions/15010981/custom-attribute-works-only-with-element-getattributeattribute-but-not-elem