如果我在页面上多次使用相同的#id,除了验证错误“ID已经定义”之外,我将面临哪些实际问题?

时间:2009-12-31 03:43:42

标签: css xhtml

首先,我使用一个#ID。只是问这个问题就知道它背后的深层原因。

这只是W3C验证的问题吗?或者更多。

我会遇到任何实际问题,还是只是验证的逻辑?

请参阅此示例http://jsbin.com/aniqi,它适用于所有浏览器。只是验证给出错误

更新:我认为所有浏览器都支持多个#ID,所以这只是推荐,但受浏览器支持。

只有验证才会出错:ID已经定义。

如果我们使用javascript来选择#ID,那么其他方面就不是问题了

更新2:如果我的一些网页设计专业的学生向我询问“为什么css #ID应该在页面中使用一次”,应该是什么答案。< strong>学生还不了解javascript 。我可以给出多少不使用#ID的原因,而所有浏览器都支持#ID?

更新3:我在W3C网站上找到了一些有用的信息

<P id="myparagraph"> This is a uniquely named paragraph.</P>
<P id="yourparagraph"> This is also a uniquely named paragraph.</P>

id属性在HTML中有几个角色:

id属性为元素分配唯一标识符(可以由SGML解析器验证)。例如,以下段落通过其id值区分:

* As a style sheet selector.
* As a target anchor for hypertext links.
* As a means to reference a particular element from a script.
* As the name of a declared OBJECT element.
* For general purpose processing by user agents (e.g. for identifying fields when extracting data from HTML pages into a database, translating HTML documents into other formats, etc.).

7 个答案:

答案 0 :(得分:7)

结果未定义。

除了其他人对getElementById所说的内容之外:

  • 在CSS中使用#foo可能适用于id="foo"的所有元素,或第一个或最后一个元素,具体取决于浏览器的实现方式。
  • 在网址中使用page.html#foo可以滚动到其中一个元素,也可以滚动到另一个元素,或者两者都不滚动。

编辑:无论哪种方式,你应该教你的学生做正确的事情,即使做错了似乎没有任何直接的不良后果...;)

答案 1 :(得分:2)

document.getElementById()无法可靠地运行。

答案 2 :(得分:1)

我遇到过某些JavaScript代码无法正常工作的经历,因为两个元素具有相同的ID。我认为getElementById只是获得具有特定ID的第一个元素。

答案 3 :(得分:1)

“为什么我说css #ID应该在页面中使用一次(对我的学生)?”

“想象一下,如果很多国家都有相同的名称会造成麻烦。身份证是身份。许多国家可以是岛屿,或热带,或者像地毯一样小,但想想如果50个国家被称为圣马力诺,它会造成的麻烦。“

答案 4 :(得分:1)

我理解你为什么问这个问题。告诉你的学生,如果他们错误地使用ID,他们将面临的潜在问题。或者,如果您不正确地编写代码,则其他编码人员想要使用/更改/更正您的代码。

换句话说,在构建页面时尽量不要让slop离开,因为不要为其他程序员留下slop是一种好习惯。而且,如果你回到那个页面并想要让它变得动态,那么当你完成时你就会陷入困境,而你却不知道为什么。

答案 5 :(得分:0)

使用getElementById()的Javascript代码至少只返回一个匹配的元素 - 其中一个将是未定义的,因此会受到跨浏览器差异的影响。

答案 6 :(得分:0)

这篇文章只是为这个有趣的讨论增加了一些点......

这是真的..Id必须是唯一的,并且浏览器本身必须折旧'重复ID'的使用。
但可能是因为这些浏览器想要让它更加编码友好,不要认真考虑“id”问题。
因此除了javascript这个错误对我们来说也不重要...
(取决于不同浏览器的版本)即使CSS没有问题..(除了验证错误)检查出来..

<head>
<style type="text/css">
  #Button{color:red;}
</style>
</head>
<body>
<form>
<input id="Button" type="button" value="Click me"/>
<input id="Button" type="text" value="Type Here"/>
</form>
</body>

但是我保证,在使用javascript的情况下,它很容易出现问题。一旦我遇到了这个问题,我在ID和NAME使用了相同的名字..!

: - )