首先,我使用一个#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.).
答案 0 :(得分:7)
结果未定义。
除了其他人对getElementById
所说的内容之外:
#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使用了相同的名字..!
: - )