文档片段:getElementById() 方法

getElementById()DocumentFragment 的一个方法,它返回一个表示元素的 Element 对象,该元素的 id 属性与指定的字符串匹配。由于如果指定了元素 ID,则需要唯一,因此它们是快速访问特定元素的实用方法。

如果您需要访问没有 ID 的元素,可以使用 querySelector() 使用任何 选择器 查找该元素。

注意:ID 在文档片段内应唯一。如果文档片段中的两个或多个元素具有相同的 ID,则此方法将返回找到的第一个元素。

语法

js
getElementById(id)

注意:此方法名称中 "Id" 的大小写必须正确,才能使代码正常运行;getElementByID()无效,不会起作用,尽管它看起来很自然。

参数

id

要定位的元素的 ID。ID 是一个区分大小写的字符串,在文档片段内是唯一的:只有一个元素应该具有任何给定的 ID。

返回值

一个 Element 对象,描述与指定 ID 匹配的 DOM 元素对象,如果在文档片段中未找到匹配的元素,则返回 null

示例

扩展元素列表

在此示例中,文档包含一个只有一个项目 Cherry 的列表。我们还创建一个包含四个更多项目的文档片段,AppleOrangeBananaMelon

然后,我们记录使用 getElementById() 在文档和片段中查找 AppleCherry 的结果。此时,Cherry 仅出现在文档中,而 Apple 仅出现在片段中。

如果单击“将片段添加到文档”,我们将片段附加到文档内的列表中,并再次记录在文档和片段中查找 AppleCherry 的结果。这次,AppleCherry 都出现在文档中,并且两者都不出现在片段中。

这是因为将片段附加到文档会将片段的节点移动到 DOM 中,留下一个空的 DocumentFragment

HTML

html
<button id="add">Add fragment to document</button>
<button id="reset">Reset example</button> <br />
List content:
<ul>
  <li id="Cherry">Cherry</li>
</ul>
Fragment content:
<ul id="fragment"></ul>
Current status:
<pre id="log" />

JavaScript

js
// Create the document fragment with its initial content
const fragment = new DocumentFragment();
["Apple", "Orange", "Banana", "Melon"].forEach((fruit) => {
  const li = document.createElement("li");
  li.textContent = fruit;
  li.id = fruit;
  fragment.append(li);
});

// When the button is clicked, add the fragment to the list
document.getElementById("add").addEventListener("click", () => {
  document.querySelector("ul").append(fragment);
  displayStatus();
});

// Log the results of both getElementById()
function displayStatus() {
  const log = document.getElementById("log");
  log.textContent = "";
  ["Apple", "Cherry"].forEach((id) => {
    log.textContent += `document.getElementById("${id}") ${
      document.getElementById(id) ? "Yes" : "No"
    }\n`;
    log.textContent += `fragment.getElementById("${id}") ${
      fragment.getElementById(id) ? "Yes" : "No"
    }\n`;
  });

  // Empty the fragment viewer and fill it with the current content
  const fragmentViewer = document.getElementById("fragment");
  while (fragmentViewer.hasChildNodes()) {
    fragmentViewer.removeChild(fragmentViewer.lastChild);
  }
  for (entry of fragment.children) {
    fragmentViewer.appendChild(entry.cloneNode(true));
  }
}

// Log the initial state
displayStatus();

// Hook the reset button
document.getElementById("reset").addEventListener("click", () => {
  document.location.reload();
});

结果

规范

规范
DOM 标准
# dom-nonelementparentnode-getelementbyid

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅