我可以向 HTML 标签添加自定义属性吗?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/1735230/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Can I add a custom attribute to an HTML tag?
提问by lovespring
Can I add a custom attribute to an HTML tag like the following?
我可以将自定义属性添加到如下所示的 HTML 标记中吗?
<tag myAttri="myVal" />
采纳答案by carillonator
You can amend your !DOCTYPE declaration (i.e. DTD) to allow it, so that the [XML] document will still be valid:
您可以修改您的 !DOCTYPE 声明(即 DTD)以允许它,以便 [XML] 文档仍然有效:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
[
<!ATTLIST tag myAttri CDATA #IMPLIED>
]>
#IMPLIED
means it is an optional attribute, or you could use #REQUIRED
, etc.
#IMPLIED
意味着它是一个可选属性,或者您可以使用#REQUIRED
等。
More information is in DTD - Attributes.
更多信息在DTD-Attributes 中。
回答by Gumbo
You can add custom attributes to your elements at will. But that will make your document invalid.
您可以随意为元素添加自定义属性。但这会使您的文档无效。
In HTML 5 you will have the opportunity to use custom data attributes prefixed with data-
.
在 HTML 5 中,您将有机会使用以data-
.为前缀的自定义数据属性。
回答by carillonator
No, this will break validation.
不,这会破坏验证。
In HTML 5 you can/will be able to add custom attributes. Something like this:
在 HTML 5 中,您可以/将能够添加自定义属性。像这样的东西:
<tag data-myAttri="myVal" />
回答by Draemon
The jQuery data()
function allows you to associate arbitrary data with DOM elements. Here's an example.
jQuerydata()
函数允许您将任意数据与 DOM 元素相关联。这是一个例子。
回答by Davide Andrea
In HTML5: yes: use the data- attribute.
在 HTML5 中:是:使用data- 属性。
<ul>
<li data-animal-type="bird">Owl</li>
<li data-animal-type="fish">Salmon</li>
<li data-animal-type="spider">Tarantula</li>
</ul>
回答by luvieere
Yes, you can, you did it in the question itself: <html myAttri="myVal"/>
.
是的,你可以,你这样做是在问题本身:<html myAttri="myVal"/>
。
回答by IgniteCoders
Yes, you can do it!
是的,你可以做到!
Having the next HTML
tag:
有下一个HTML
标签:
<tag key="value"/>
We can access their attributes with JavaScript
:
我们可以通过以下方式访问它们的属性JavaScript
:
element.getAttribute('key'); // Getter
element.setAttribute('key', 'value'); // Setter
Element.setAttribute()
put the attribute in the HTML
tag if not exist. So, you dont need to declare it in the HTML
code if you are going to set it with JavaScript
.
Element.setAttribute()
HTML
如果不存在,则将属性放入标签中。所以,HTML
如果你要设置它,你不需要在代码中声明它JavaScript
。
key
: could be any name you desire for the attribute, while is not already used for the current tag.
value
: it's always a string containing what you need.
key
: 可以是您想要的任何属性名称,而当前标签尚未使用。
value
: 它始终是一个包含您需要的字符串。
回答by Jasim Droid
var demo = document.getElementById("demo")
console.log(demo.dataset.myvar)
// or
alert(demo.dataset.myvar)
//this will show in console the value of myvar
<div id="demo" data-myvar="foo">anything</div>
回答by ewg
You can set properties from JavaScript.
您可以从 JavaScript 设置属性。
document.getElementById("foo").myAttri = "myVal"
回答by kenorb
Here is the example:
这是示例:
document.getElementsByTagName("html").foo="bar"
Here is another example how to set custom attributes into body tag element:
这是如何将自定义属性设置到 body 标记元素的另一个示例:
document.getElementsByTagName('body')[0].dataset.attr1 = "foo";
document.getElementsByTagName('body')[0].dataset.attr2 = "bar";
Then read the attribute by:
然后通过以下方式读取属性:
attr1 = document.getElementsByTagName('body')[0].dataset.attr1
attr2 = document.getElementsByTagName('body')[0].dataset.attr2
You can test above code in Consolein DevTools, e.g.
您可以在 DevTools 的Console中测试以上代码,例如