Javascript 他们为什么反对';名称';HTML的属性<;a>;元素?

Javascript 他们为什么反对';名称';HTML的属性<;a>;元素?,javascript,html,anchor,web-standards,name-attribute,Javascript,Html,Anchor,Web Standards,Name Attribute,,在HTML5中,我们应该开始使用id属性来引用a元素,而不是name属性。问题在于,还有一个约束,即每个文档的id应该是唯一的 现在,我看到很多情况下,您希望引用一组相关的a元素(通常在JS中)。但是,通过去掉name属性,我们不得不重用相同的id,或者使用类名称。类应该是关于表示的,所以如果您出于与表示无关的原因引用a,这也是一个不完美的解决方案 我想HTML5的另一个替代方案是使用类似于数据名的东西,但这似乎也有点骇人听闻。有什么我遗漏的吗?W3是否有秘密密谋将name全部淘汰 编辑:对于

,在HTML5中,我们应该开始使用
id
属性来引用
a
元素,而不是
name
属性。问题在于,还有一个约束,即每个文档的
id
应该是唯一的


现在,我看到很多情况下,您希望引用一组相关的
a
元素(通常在JS中)。但是,通过去掉
name
属性,我们不得不重用相同的
id
,或者使用
名称。类应该是关于表示的,所以如果您出于与表示无关的原因引用
a
,这也是一个不完美的解决方案

我想HTML5的另一个替代方案是使用类似于
数据名
的东西,但这似乎也有点骇人听闻。有什么我遗漏的吗?W3是否有秘密密谋将
name
全部淘汰

编辑:对于那些说“课程不一定需要关于演示”的人,我很难找到具体的来源,但我知道我至少读过几篇强调这一点的博客/文章。我觉得那些人不是JS程序员


另外:谢谢你的解释和深思熟虑的回答

我认为没有理由不使用类或数据属性

关于
名称
属性的要点-无论如何,这些都应该是唯一的!多个同名的
a
元素并不十分有用,因为在URL中链接到它们会变得模棱两可:
www.example.com\my named element

在我们公司,我们已经探索了如何使用
数据行为
属性,如下所示:

<a href='#' data-behaviors='something-cool something-else'>Click Me</a>
我们还探讨了如何使用命名约定为
.js的类,这些类很酷
,这样我们就不会被哪些类是用于CSS的,哪些类是特定于javascript功能的混淆了

最后,我们更喜欢
js-
类名方案,因为它比
数据行为
版本更简单。但有时我们会根据需要进行混搭

例如,您可以使用如下切换功能:

<a href='#' data-toggle='#opened-div'>Click Me</a>

<div id='opened-div'>Some stuff</div>

一些东西
这样,您的数据属性既可以用于绑定事件,也可以决定要切换哪些元素

在HTML5中,我们应该开始使用id属性来引用元素,而不是name属性

HTML4中引入了使用
id
s链接到。XHTML1不推荐使用
name
属性。这是在HTML5中维护的

问题在于,还有一个约束,即每个文档的id都应该是唯一的

不明确的链接目标是没有用的

看看下面的例子:

这应该是一个字符串,用于定义当前HTML文档范围的唯一名称

将其弃用以支持
id
不会添加任何新的唯一性约束

现在,我看到很多情况下,您希望引用一组相关的
a
元素(通常在JS中)

在很多情况下,您可能希望引用各种不同类型的相关元素。HTML为此提供了类。您甚至可以让一个元素成为多个元素的成员


课程应该是关于演讲的

不,他们不是。类是将一组元素标识为属于组的通用方法

看一看a中类的定义:

事物的集合或类别,具有某些共同的属性或属性,并在种类、类型或性质上与其他事物有所区别

另请参阅,其中没有提到严格用于表示,使用JavaScript就是一个例子


它们主要与CSS一起使用,只是因为人们经常希望将样式应用于元素组。

啊,HTML。你是多么反复无常啊

问题似乎在于锚定的
name
属性和输入的
name
属性之间的混淆。回到HTML5之前,您需要一种方法来区分传出链接(通过
href
)和内部文档链接(书签)

那么,他们将如何做到这一点呢?这里规定:

通过激活这些链接(通过鼠标单击、键盘输入、语音命令等),用户可以访问这些资源。请注意,每个源锚点中的href属性使用URI指定目标锚点的地址

链接的目标锚点可以是HTML文档中的元素。必须给目标锚定一个锚定名称,任何寻址该锚定的URI都必须包含该名称作为其片段标识符

HTML文档中的目标锚可以由A元素(使用name属性命名)或任何其他元素(使用id属性命名)指定

是的,给一个锚定一个
name
属性(作为片段标识符),另一个锚定可以
链接到该属性

只是,在HTML5中,他们决定任何元素(除了
a
)都可以作为片段标识符(这很有意义-应该只有一个片段可以链接到…),这就是为什么他们不赞成
name
属性

至于如何选择呢?
class
属性非常好(当然,它用于样式设置,但它是否使其纯粹具有代表性?)

另一句话(来自w3c:)

另一方面,class属性为元素指定一个或多个类名;可以说元素属于这些类。一个类名可以由多个元素实例共享。class属性在HTML中有几个角色:

*作为样式表选择器(
<a href='#' data-toggle='#opened-div'>Click Me</a>

<div id='opened-div'>Some stuff</div>