2009-01-09 95 views
40

我是否允许将任何属性添加到HTML标记中,以便稍后使用JavaScript检索它们的值?例如:我可以在我的HTML标签上设置属性吗?

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

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

编辑:由于看来弥补HTML属性不是技术上有效,我已经改写了这个问题的第二部分到它自己的问题在这里:How to store arbitrary data for some HTML tags

+1

+1我是一个使用数据属性声明性接线行为的大爱好者,而不是使用类。然而,像tipcolour我会尝试使用一个类,如果我能得到正确的CSS。换句话说,行为的属性,风格的类。 – AaronLS 2012-10-31 17:57:26

回答

43

在HTML5中,是的。你只需要以data-为前缀。见the spec

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

4

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

这几乎肯定是做错的一种方式。尝试使用class =“hasTooltip_yes tipcolour_yellow”

+0

你不觉得那个混蛋的类属性更糟吗? – nickf 2009-01-09 06:53:18

+1

如果你对班级属性进行了混搭,它仍然会验证,所以就遵守标准而言,你的状况还是比较好的。 – 2009-01-09 06:56:08

+17

仅仅因为你遵守标准,并不意味着你有最好的解决方案。 – Kibbee 2009-01-11 02:23:18

2

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

+0

根据规范,rel属性只能包含LinkTypes,例如:start next prev chapter – nickf 2009-01-09 06:59:21

24

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

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

多个类选色我极力劝阻你在你的HTML中使用硬编码的颜色名称,你必须宣告风格CSS。使用类属性为CSS声明钩,并选择语义类的名称,例如

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”的类的元素,所以在重新设计页面以获得绿色工具提示时,您不会反驳自己。

相关问题