HTML元素的[name]和[id]可以相同吗?

43

我正在尝试使用Satay方法将Flash应用程序嵌入网页中:

<object type="application/x-shockwave-flash" data="embeddy.swf"
<i>id="embeddy" name="embeddy"</i>>
  <param name="movie" value="embeddy.swf" />
</object>

我希望Flash能在ExternalInterface.objectID中提供正确的objectID,这意味着我需要为object设置nameid属性。

通常情况下,我会避免与HTML元素发生名称冲突,但在这种情况下,同时将两个属性设置为相同的值有什么问题吗?

对于HTML表单呢?有人觉得将(input | select | textarea)元素的nameid属性设置为相同的值是否值得呢?

5个回答

66

你可以使用ID进行JavaScript操作。

你可以使用名称进行表单字段提交。

这两者没有关联。因此,将它们都设置为相同的值是可以的,但并非必需。


13
ID应该是唯一的,但名称不必是唯一的。 - jordanbtucker
Ida也可通过片段标识符进行链接,并通过在CSS选择器中使用来进行样式设置。 - Bobby Jack
Id用于更容易地使用JavaScript进行操作,但是使用JavaScript也可以通过名称完成一些操作。 - Hamish Grubijan
谢谢,我已经搜索了一段时间,寻找这个答案。 - Tim Aych

11

这不仅没问题,而且很常见。

ID用于JavaScript(在CSS中使用的程度较小)。

名称用于表单字段,以指定提交值的名称。

然而,早期版本的IE存在已知缺陷,这意味着在许多情况下,您几乎被迫将它们两者都指定为相同的名称。 (当然,假设您想支持那些旧版本的IE!)

需要记住的唯一一件事是ID必须是唯一的。 因此,如果您有所有具有相同名称的单选按钮,则不能将相同的ID用于它们。 但在大多数其他情况下,将它们设置为相同的名称完全没有问题。


2
我刚刚发现了关于我的问题的HTML4答案

id和name属性共享相同的命名空间。这意味着它们不能同时在同一文档中定义具有相同名称的锚点。可以使用这两个属性来指定以下元素的唯一标识符:A、APPLET、FORM、FRAME、IFRAME、IMG和MAP当在单个元素上同时使用这两个属性时,它们的值必须相同。

现在,我认为应该通过扩展将应用于appletiframe的规则适用于objectembed标签。无论如何,在目前为止,使用相同的名称和ID没有产生任何异常事件。


2

没问题!这绝对没问题。

id是客户端标识符(用于在DOM中查找元素)

name用于提交表单以POST/GET值。

除了在输入元素之外,没有必要使用name。但给输入元素一个id可以使它们以一致的方式在DOM中被查找到。


1

我经常这样做(主要是因为过去的一些浏览器 - IE 会使用 name 参数发送表单数据)。在我的看法中,使用 id 可以使表单验证代码更加清晰。


4
浏览器只应该使用"name"参数来发送表单数据。 - Gareth
1
虽然您不会为同一组中的单选按钮或复选框使用相同的“name”和“id”值,但是由于单选按钮/复选框组都具有相同的名称,因此它们可以被识别。 - Paul D. Waite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接