--- title: Document.createElementNS() slug: Web/API/Document/createElementNS translation_of: Web/API/Document/createElementNS ---
{{ApiRef("DOM")}}

Crea un elemento del DOM con el espacio de nombres URI y un nombre calificado.

Para crear un elemento sin especificar un espacio de nombre URI usa el método createElement.

Sintaxis

var element = document.createElementNS(namespaceURI, qualifiedName[, options]);

Parámetros

namespaceURI
String que especifica el namespace URI a asociar con el elemento. La propiedad namespaceURI del elemento creado es inicializada con el valor del namespaceURI. Ver Namespace URIs válidos.
qualifiedName
String que especifica el tipo del elemento a ser creado. La propiedad nodeName del elemento creado es inicializada con el valor qualifiedName.
optionsOpcional
Un objeto opcional ElementCreationOptions que contiene una sola propiedad llamada is, cuyo valor es el nombre de la etiqueta para un elemento personalizado previamente definido usando customElements.define(). Para retro compatibilidad con versiones previas de la Especificación de Elementos Personalizados, algunos navegadores te permitirán pasar un String aquí en lugar de un Objeto, donde el valor del String es el nombre de la etiqueta del elemento personalizado. Ver Extendiendo elementos HTML nativos para más información sobre como usar este parámetro.
Al nuevo elemento le será dado un atributo is cuyo valor es el nombre de la etiqueta del elemento personalizado. Los elementos personalizados son una característica experimental disponible solo en algunos navegadores.

Valor de Retorno

El nuevo Elemento.

Namespace URIs válidos

Ejemplo

El código siguiente crea un elemento <div> nuevo en el namespace XHTML y lo agrega al elemento vbox. Aunque no es un documento XUL extremamente útil esto demuestra el uso de los elementos de dos namespaces distintos dentro de un solo documento:

<?xml version="1.0"?>
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
      xmlns:html="http://www.w3.org/1999/xhtml"
      title="||Trabajando con elementos||"
      onload="init()">

<script type="text/javascript"><![CDATA[
 var container;
 var newdiv;
 var txtnode;

 function init(){
   container = document.getElementById("ContainerBox");
   newdiv = document.createElementNS("http://www.w3.org/1999/xhtml","div");
   txtnode = document.createTextNode("Este es el texto que fue construido dinámicamente con createElementNS y createTextNode y luego insertado dentro del documento usando appendChild.");
   newdiv.appendChild(txtnode);
   container.appendChild(newdiv);
 }

]]></script>

 <vbox id='ContainerBox' flex='1'>
  <html:div>
   El script en esta página agregará contenido dinámico debajo:
  </html:div>
 </vbox>

</page>

El ejemplo dado arriba usa script en linea lo cúal no es recomendable en documentos XHTML. Este ejemplo en particular es un documento XUL con XHTML embedido, de cualquier forma la recomendación aplica.

Especificaciones

Especificación Estatus Comentario
{{SpecName('DOM WHATWG', "#dom-document-createelementns", "Document.createElement")}} {{Spec2('DOM WHATWG')}}  

Compatibilidad con navegadores

{{CompatibilityTable}}

Soporte Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Soporte básico {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
argumento options  {{CompatVersionUnknown}}[1] {{CompatGeckoDesktop(50)}}[2][3] {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Soporte Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Soporte básico {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}

[1] En versiones previas de la especificación  el argumento fue solo un String cuyo valor fue el nombre de etiqueta del elemento personalizado. Por motivo de retro compatibilidad Chrome acepta ambas formas.

[2] Ver [1] arriba: Firefox al igual que Chrome acepta un string en lugar de un objeto, pero solo de la version 51 en adelante. En la version 50 options debe ser un objeto.

[3] Para experimentar con elementos personalizados en Firefox debes establecer las preferencias  dom.webcomponents.enabled y dom.webcomponents.customelements.enabled como true.

Ver también