此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Document:createElement() 方法

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.

* Some parts of this feature may have varying levels of support.

Document 接口的 createElement() 方法用于创建一个具有指定 localNameHTMLElement

如果 localName 无法被识别,该方法将创建一个 HTMLUnknownElement

语法

js
createElement(localName)
createElement(localName, options)

参数

localName

一个指定要创建的元素类型的字符串。不要使用限定名称(如“html:a”)调用此方法。在 HTML 文档上调用时,createElement() 会在创建元素之前将 localName 转换为小写。在 Firefox、Opera 和 Chrome 中,createElement(null) 的效果与 createElement("null") 相同。

options 可选

一个包含以下可选属性的对象(注意,iscustomElementRegistry 只能设置其中一个):

is 可选

一个定义先前使用 customElements.define() 定义的自定义元素的标签名的字符串。新元素将被赋予 is 属性,其值为自定义元素的标签名。详见 Web component 示例

customElementRegistry 可选

一个 CustomElementRegistry,用于设置自定义元素的域限自定义元素注册表

返回值

新的 Element

备注:如果文档是 HTMLDocument,则返回新的 HTMLElement,这是最常见的情况。否则返回新的 Element

异常

InvalidCharacterError DOMException

如果 localName 值不是有效的元素名称,则抛出此异常。如果字符串长度至少为 1 且满足以下条件,则为有效的元素名称:

  • 以字母字符开头,且不包含 ASCII 空白字符、NULL/>(分别为 U+0000、U+002F 或 U+003E)。
  • :(U+003A)、_(U+005F)或 U+0080 到 U+10FFFF 范围内的任何字符开头,并且其余码位仅包含这些相同的字符以及 ASCII 字母数字字符、-(U+002D)和 .(U+002E)。

备注:早期版本的规定更为严格,要求 localName 必须是有效的 XML 名称

NotSupportedError DOMException

如果同时指定了 iscustomElementRegistry 选项,则抛出此异常。

示例

基础示例

创建一个新的 <div> 并将其插入到 ID 为 div1 的元素之前。

HTML

html
<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <title>操作元素</title>
  </head>
  <body>
    <div id="div1">上面的文本是动态创建的。</div>
  </body>
</html>

JavaScript

js
function addElement() {
  // 创建一个新的 div 元素
  const newDiv = document.createElement("div");
  // 给它一些内容
  const newContent = document.createTextNode("你好!欢迎使用!");
  // 将文本节点添加到新创建的 div 元素中
  newDiv.appendChild(newContent);

  // 将新元素及其文本添加到 DOM 中
  const currentDiv = document.getElementById("div1");
  document.body.insertBefore(newDiv, currentDiv);
}

addElement();

Web component 示例

以下示例片段取自我们的 expanding-list-web-component 示例(实时查看)。在这个案例中,我们的自定义元素继承了以 <ul> 元素为代表的 HTMLUListElement

js
// 为新元素创建一个类
class ExpandingList extends HTMLUListElement {
  constructor() {
    // 构造函数中始终首先调用 super
    super();

    // 构造函数定义省略
    // …
  }
}

// 定义新元素
customElements.define("expanding-list", ExpandingList, { extends: "ul" });

如果我们想以函数的方式创建此元素的实例,则可以使用以下方式调用:

js
const expandingList = document.createElement("ul", { is: "expanding-list" });

新元素将被赋予 is 属性,其值为自定义元素的标签名称。

备注:为了向后兼容,某些浏览器允许在此处传递字符串而不是对象,其中字符串的值是自定义元素的标签名。

规范

Specification
DOM
# ref-for-dom-document-createelement①

浏览器兼容性

参见