--- title: Document.createElement() slug: Web/API/Document/createElement tags: - API - DOM - Document - 参考 - 方法 translation_of: Web/API/Document/createElement ---
在 HTML 文档中,Document.createElement() 方法用于创建一个由标签名称 tagName 指定的 HTML 元素。如果用户代理无法识别 tagName,则会生成一个未知 HTML 元素 {{domxref("HTMLUnknownElement")}}。
var element = document.createElement(tagName[, options]);
tagName 的值为初始化,该方法不允许使用限定名称(如:"html:a"),在 HTML 文档上调用 createElement() 方法创建元素之前会将tagName 转化成小写,在 Firefox、Opera 和 Chrome 内核中,createElement(null) 等同于 createElement("null")ElementCreationOptions 是包含一个属性名为 is 的对象,该对象的值是用 customElements.define() 方法定义过的一个自定义元素的标签名。为了向前兼容较老版本的 Custom Elements specification, 有一些浏览器会允许你传一个值为自定义元素的标签名的字符串作为该参数的值。可以参考本页下方的 Web component 示例 Google 的 Extending native HTML elements 文档仔细了解如何使用该参数。新建的元素({{domxref("Element")}})。
创建一个新的 <div> 并且插入到ID为“div1”的元素前。
<!DOCTYPE html> <html> <head> <title>||Working with elements||</title> </head> <body> <div id="div1">The text above has been created dynamically.</div> </body> </html>
document.body.onload = addElement;
function addElement () {
// 创建一个新的 div 元素
let newDiv = document.createElement("div");
// 给它一些内容
let newContent = document.createTextNode("Hi there and greetings!");
// 添加文本节点 到这个新的 div 元素
newDiv.appendChild(newContent);
// 将这个新的元素和它的文本添加到 DOM 中
let currentDiv = document.getElementById("div1");
document.body.insertBefore(newDiv, currentDiv);
}
{{EmbedLiveSample("Basic_example", 500, 50)}}
以下示例片段取自我们的 expanding-list-web-component 示例(实时查看)。 在这个案例中, 我们的自定义元素继承了以 {{htmlelement("ul")}} 元素为代表的 {{domxref("HTMLUListElement")}}.
// 为新元素创建一个类
class ExpandingList extends HTMLUListElement {
constructor() {
// Always call super first in constructor
super();
// constructor definition left out for brevity
...
}
}
// 定义新元素
customElements.define('expanding-list', ExpandingList, { extends: "ul" });
如果我们想以函数的方式创建此元素的实例,则可以使用以下方式调用:
let expandingList = document.createElement('ul', { is : 'expanding-list' })
新元素将被赋予is属性,其值为自定义元素的标签名称。
Note: 为了兼容之前版本的 Custom Elements specification 规范,某些浏览器将允许您在此处传递字符串而不是对象,其中字符串的值是自定义元素的标记名。
document.createElementNS()。createElement(null) 和 createElement("null") 相同。Opera 也会将 null 字符串化,但是 Chrome 和 IE 都会抛出错误。createElement() 不再使用 {{domxref("HTMLSpanElement")}} 接口, 参数为 "bgsound" 和 "multicol" 时,使用 HTMLUnknownElement ,为“image”时使用{{domxref("HTMLElement")}} HTMLElement。createElement 的Gecko实现不遵循XUL和XHTML的DOM说明文档: 创建元素的localName和namespaceURI不会被设置为null. 更多细节详见 {{Bug(280692)}}。| 规范 | 状态 | 备注 |
|---|---|---|
| {{SpecName('DOM WHATWG', "#dom-document-createelement", "Document.createElement")}} | {{Spec2('DOM WHATWG')}} |
{{Compat("api.Document.createElement")}}