可能重复:
具有相同ID响应一个CSS ID选择多个元素
下面是我测试的示例代码和我弄糊涂了。 每个人说,我们可以使用或应该每个ID只能使用一次,但我一直在使用多次,但它给我正确的输出使用它的睾丸。
我该怎么办?
它还挺工作同样喜欢类我在这个例子中
码:
<html>
<head>
<style>
#exampleID1 { background-color: blue; }
#exampleID2 { text-transform: uppercase; }
</style>
</head>
<body>
<p id="exampleID1">This paragraph has an ID name of "exampleID1" and has a blue CSS defined background.</p>
<p id="exampleID2">This paragraph has an ID name of "exampleID2" and has had its text transformed to uppercase letters.</p>
<address id="exampleID1">
Written by W3Schools.com<br />
<a href="mailto:us@example.org">Email us</a><br />
Address: Box 564, Disneyland<br />
Phone: +12 34 56 78
</address>
<blockquote id="exampleID1">
Here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation.
</blockquote>
</body>
</html>
请参阅上面的代码,并回答我,为什么我们不应该在页面中使用id选择的两倍,而其工作的罚款。
一个ID必须是在一个页面是独一无二的。 如果你想描述一组元素使用的类。
为什么同时其做工精细,我们不应该在页面中使用id选择两次。
你正在一个错误,并根据这将不会查看该页面以补偿它的每一个浏览器。 你不能肯定他们的旨意。
我认为,更简单的方法来了解正在做一个产品的类比。 试想一下,一个ID
就像一个序列号,换句话说,它必须是唯一的,这样就可以识别出具有相同的副本milions的产物。
然后,想象class
的产品代码,例如可以是条形码。 在超市所有等于产品具有相同的条形码由光学读出器来读取。
所以,一个ID
是唯一identifiquer和class
基团的一组元素。
但是,如果我使用相同的ID
在我的HTML / CSS我是得到一个完美的结果,我为什么要担心的唯一ID
S'
原因1号:
在未来,如果你需要使用JavaScript,如果你需要操纵特定的元素,它有一个重复的ID
,你的代码将不会产生预期的结果。
原因2号
您的代码不会被W3C被valited,什么意思,你可以有你的网站保持兼容翻过浏览器头疼的问题。 它可以在一个浏览器和其他不正常工作。
用一个真实的例子,假设你想dinamically更新,使用Javascript,此元素的文本:
<blockquote id="exampleID1">
Here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation here is a long quotation.
</blockquote>
使用JavaScript / JQuery的,你会使用这样的代码:
$("#exampleID1").html("Changing element content");
然后将元素的文本<blockquote id="exampleID1">
将被更新,但以下元件也将被更新的,因为它具有相同的ID
。
<p id="exampleID1">This paragraph has an ID name of "exampleID1" and has a blue CSS defined background.</p>
所以,如果你只想一个元素的更新,它们必须具有唯一的ID
秒。
我希望你可以使用这个解释更好地理解之间的区别ID
和class
。
它的工作,但是这并不标识是为了(根据HTML规范)的使用方式。 的ID必须只是指一个对象。 描述多个对象必须用类,而不是ID来完成。
您应该使用唯一的ID,以确保HTML是有效的。
这背后的原因很简单,就是IDS用于识别独特的元素。
该网页将仍然呈现,尽管是无效的,但最大的现实问题是,JavaScript和其他库进行了优化,在假设ID是唯一的,这样,如果你想获取一个ID的所有元素,并使用其隐藏例如工作jQuery的
$('#exampleID1').hide();
只有第一个元素会被隐藏,因为通过ID来选择应该只返回一个单一的项目,一旦一个元素被发现查询短路返回单个元素。 如果不知道这一点,你可以得到一些看似奇怪的行为,很难诊断的缺陷。
为什么同时其做工精细,我们不应该在页面中使用id选择两次
因为你不知道它是否在每个浏览器工作正常。
规格说,一个ID必须是唯一的页面,所以当浏览器找到你的副本ID:就是他们会试图竭尽所能地处理它。 大多数浏览器似乎使用标识只为第一要素,但留下的元素id属性,使你的CSS仍然有效处理它,但不能保证所有浏览器处理它的方式。
不同的浏览器厂商使用不同的策略来处理不正确的标记,并且每个供应商找到了“新的,更好的”的方式,让不正确的标记在许多不同的方式尽可能通常处理。