HTML id 全局属性

id 全局属性 定义了一个在整个文档中必须唯一的标识符(ID)。

试一试

<p>A normal, boring paragraph. Try not to fall asleep.</p>

<p id="exciting">The most exciting paragraph on the page. One of a kind!</p>
#exciting {
  background: linear-gradient(to bottom, #ffe8d4, #f69d3c);
  border: 1px solid dimgrey;
  padding: 10px;
  border-radius: 10px;
  box-shadow: 2px 2px 1px black;
}

#exciting::before {
  content: "ℹ️";
  margin-right: 5px;
}

语法

ID 属性的值不能包含 ASCII 空白字符。浏览器会将包含空白字符的不符合规范的 ID 视为空白字符是 ID 的一部分。与允许空格分隔值的 class 属性不同,元素只能有一个单一的 ID 值。

技术上讲,ID 属性的值可以包含任何其他 Unicode 字符。但是,当在 CSS 选择器中使用时,无论是通过 JavaScript 使用诸如 Document.querySelector() 等 API,还是在 CSS 样式表中,ID 属性值都必须是有效的 CSS 标识符。这意味着,如果 ID 属性值不是有效的 CSS 标识符(例如,my?id1234),则在使用它进行选择时必须对其进行转义,可以使用 CSS.escape() 方法或 手动 进行转义。

因此,建议开发者为 ID 属性选择不需要转义且是有效 CSS 标识符的值。

此外,并非所有有效的 ID 属性值都是有效的 JavaScript 标识符。例如,1234 是一个有效的属性值,但不是一个有效的 JavaScript 标识符。这意味着该值不是一个有效的变量名,因此您不能通过 window.1234 这样的代码访问该元素。但是,您可以使用 window["1234"] 来访问它。

描述

ID 属性的目的是在链接(使用 片段标识符)、脚本或样式(使用 CSS)时标识单个元素。

您可以将具有 ID 属性的元素作为 window 对象的全局属性来访问,其中属性名是 ID 值,属性值是相应的元素。例如,给定以下标记

html
<p id="preamble"></p>

您可以使用以下 JavaScript 代码访问此段落元素

js
const content = window.preamble.textContent;

警告:依赖 window["id-value"]window.idValue 模式是危险且不被推荐的,因为它可能导致与浏览器中现有或未来 API 发生意外冲突。例如,如果浏览器将来引入一个名为 preamble 的内置全局属性,您的代码将无法再访问 HTML 元素。为了避免此类冲突,请始终使用 Document.getElementById()Document.querySelector() 方法通过 ID 访问元素。

规范

规范
HTML
# the-id-attribute

浏览器兼容性

另见