【问题标题】:Can I just make up attributes on my HTML tags?我可以只在我的 HTML 标签上添加属性吗?
【发布时间】:2010-09-30 10:44:04
【问题描述】:

我是否可以向 HTML 标记添加任何我想要的属性,以便以后可以使用 javascript 检索它们的值?例如:

<a href="something.html" hastooltip="yes" tipcolour="yellow">...</a>

如果这不起作用,您将如何存储这样的任意信息?

编辑:由于构成 HTML 属性似乎在技术上无效,因此我在此处将这个问题的第二部分改写为自己的问题:How to store arbitrary data for some HTML tags

【问题讨论】:

  • +1 我非常喜欢使用数据属性进行声明性连接行为,而不是使用类。但是,如果我能得到正确的 CSS,我会尝试使用类似tipcolor 的类。换句话说,行为的属性,风格的类。

标签: javascript html


【解决方案1】:

在 HTML5 中,是的。您只需在它们前面加上data-。见the spec

当然,这意味着您应该使用 HTML5 文档类型 (&lt;!doctype html&gt;),即使浏览器不在乎。

【讨论】:

  • HTML5 仍处于草稿阶段,这不是一个安全的建议
  • 嗯,这个规范是在最终确定之前使用的。 wiki.whatwg.org/wiki/…
  • 这不会破坏任何东西,只是随意选择属性,而且它对未来的规范有效,微笑!
  • @annakata,这个建议有什么不安全的地方?它会破坏什么?
  • 不要太担心规范没有最终确定。最终的规范可能会改变/被取代。浏览器可能不会实现该规范。只需确保为用户进行测试,并与网络一起发展!
【解决方案2】:

好吧,您总是可以创建自己的 DTD 来为您的标签获取新的有效属性。浏览器不会打嗝,如果您可以访问这些自定义属性,您应该测试您的 JavaScript。或者,您可以使用 HTML 和 CSS 提供的现有设施。您可以使用多个类,例如

<a href="..." class="class-one class-two has-tooltip">

对于颜色选择,我强烈建议您在 HTML 中使用硬编码的颜色名称,您可以使用 CSS 来声明样式。使用 class 属性作为 CSS 声明的钩子,并选择 semantic 类名,例如

HTML:

<a href="..." class="has-tooltip common-tooltip">
<a href="..." class="has-tooltip long-tooltip">

CSS:

a.has-tooltip {
   colour: red;
}
a.common-tooltip {
   background: #ddd;
}
a.long-tooltip {
   background: #ebf;
}

并且在您的 JavaScript 代码中,您可以生成带有“long-tooltip”和“common-tooltip”等类的元素,而不是“yellow-tooltip”,因此在重新设计页面以使其具有绿色的情况下,您不会自相矛盾工具提示。

【讨论】:

  • 我给出的例子只是一个例子:我要存储的数据可以是任何东西,而不仅仅是颜色等等。
【解决方案3】:

你可以。该页面不会通过验证,但大多数浏览器都会接受它。

这几乎肯定是错误的做法。尝试使用 class="hasTooltip_yes tipcolour_yellow"

【讨论】:

  • 你不觉得把class属性混为一谈更不对吗?
  • 仅仅因为您遵守标准,并不意味着您拥有最佳解决方案。
【解决方案4】:

根据您要存储的信息,您应该查看其他一些可用的属性。这些看起来不是很好的候选者,但 'rel' 已被用于许多有趣的事情。

【讨论】:

  • 根据规范,rel 属性只能包含 LinkTypes eg: start next prev chapter
  • 但是,规范并没有定义权威的链接类型列表,实际上留有扩展空间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多