【问题标题】:Name vs Id attribute in HTMLHTML中的名称与ID属性
【发布时间】:2011-05-28 03:14:54
【问题描述】:

使用<div id="here" ... 代替<div name="here" ... 有什么好处吗?

他们都被称为#here吗?

【问题讨论】:

标签: html


【解决方案1】:

以下是两者之间的一些区别:

  1. name 从来都不是 div 元素属性。

  2. name 用于表单控件(input、textarea、select 和 button 元素)与命名元素的 id 属性完全不同。在这种情况下,name 属性与数据在发送到服务器时的标记方式有关,并且多个元素可能共享相同的名称。

    另一方面,id 属性用于标识一个唯一元素以用于脚本、样式或寻址。

  3. name 属性在表单控件以外的其他元素上的使用在 HTML 4.01 中与 id 相同,但它允许的字符集比表单控件更广id 属性并没有以完全相同的方式控制。由于这种模糊性,W3C 决定弃用/删除这些元素上的 name 属性,转而支持 XHTML 中明确的 id 属性。

    这也与 XML 的另一个细节有关——任何元素只有一个属性可能是 ID 类型,如果他们让 name 停留在元素上,但纠正了歧义问题。

  4. 由于 name 属性在这两组元素上的作用不同,因此最好删除其中一组。

简而言之,为了向后兼容,你应该使用 name 和 id 属性,两者都设置为相同的值,如果你使用除了表单控件之外的所有元素HTML 4.01 或 XHTML 1.0 过渡。如果您使用 XHTML 1.0 Strict 或更高版本,则应仅使用 id。对于表单控件,您应该将 name 用于您希望表单发送到服务器的内容以及用于 DOM 0 访问,并且仅将 id 用于样式、DOM1-3 访问或解决原因

【讨论】:

    【解决方案2】:

    这取决于你打算在哪里使用它们。

    通常,一个元素的id 是唯一的,而多个元素可以共享同一个name。

    Id 引用为#here,name 引用为[name=here]。

    【讨论】:

    • 你确定你不是在说class
    • 按照标准,ID必须在整个页面上是唯一的。名称 - 并非对所有标签都有效 - 不一定必须是唯一的。
    • 但是name也被引用为#name?
    • 在 CSS(或使用 CSS 选择器的 javascript)中,名称不被引用为 #name。类被引用为 .class。听起来您将其与 URL 哈希混淆了。如果一个元素有名称或 ID,那么您可以将 #name 放在 URL 的末尾,它会滚动到页面上的那个元素。
    【解决方案3】:

    它们不可互换,即使它们有时看起来可以互换。

    名称 应该只存在于表单输入字段中。这就是该标签将导致浏览器将提交作为字段名称传递的内容。正如 Tomalak 在评论中指出的那样,DIV 实际上没有 Name 属性。

    ID 是 DOM 的唯一标识符,用于操作或引用标签;例如,在 JavaScript 中。

    【讨论】:

      【解决方案4】:

      “id”属性为相关元素分配一个标识符。此标识符在文档中必须是唯一的,并且可用于引用该元素。

      检查div element。

      【讨论】:

        【解决方案5】:

        您可能正在考虑输入标签。它提供了 name 属性来识别提交表单时哪个输入是什么。

        id 将仅用于设置输入样式,而 name 不会。

        【讨论】:

          【解决方案6】:

          其他答案中没有提到的重要一点是,具有 name 属性的表单作为变量添加到 JavaScript 中的文档对象中。任何在该表单中具有名称的表单控件都可以作为表单元素上的子对象访问。

          因此,例如,如果您有一些类似以下的 HTML:

          <form name="myForm">
            <input name="myInput" type="text" />
          </form>
          

          您可以使用document.myForm 访问表单或使用document.myForm.myInput 访问输入元素。

          在JSFiddle 上查看此想法的实际示例。

          【讨论】:

            【解决方案7】:

            答案是:

            1. id attribute 在整个 HTML 文档中是唯一的,并且
            2. name attribute 没有这样的要求。

            按照惯例,name 值与表单一起使用以帮助处理表单,尤其是单选按钮。您如何使用 name 属性取决于您的用例。如果您的用例需要一些其他标签,您当然可以创建一个新属性并随意使用它;为您的属性选择一个可能非常独特的名称!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2018-01-07
              • 2018-07-10
              • 2014-08-17
              • 1970-01-01
              • 2012-05-09
              • 1970-01-01
              • 2011-11-20
              相关资源
              最近更新 更多