type tag change attribute javascript attributes firefox-addon lang

tag - set value input javascript



elt.lang=''fr'' no funciona (2)

Trabajo en el contexto de una extensión de Firefox .

Problema

Intento crear un nuevo elemento con un atributo lang específico. elt.lang = ''zh'' el método elt.lang = ''zh'' dado en Cómo crear un elemento HTML con el atributo lang en JavaSript? no funciona El elemento se crea pero sin el atributo lang .

No funciona como el código esperado

var wrapper = document.createElement("span"); var zh = document.createElement("i"); zh.textContent = symbol; zh.lang= "zh-cmn"; // <-- -- -- -- -- -- -- var srcText = document.createTextNode(''blablabla''); wrapper.appendChild(zh); wrapper.appendChild(srcText);

Trabajando como código esperado

Sin embargo, cuando uso el método Element.setAttribute() funciona bien:

zh.setAttribute(''lang'',''zh'');

¿Por qué el elt.lang / punto-notación no funciona?


Problema

El problema estaba relacionado con el medio ambiente (es decir, una extensión). Estaba en un contexto XUL, por lo que al usar createElement() un elemento XUL que no tiene un atributo lang .

Entonces, para solucionar un problema y otro (no hay forma de seleccionar el texto insertado), tuve que forzar el espacio de nombres XHTML con createElementNS(ns, elt) .

Código

var nsXHTML = "http://www.w3.org/1999/xhtml"; var wrapper = document.createElementNS(nsXHTML, "span"); var zh = document.createElementNS(nsXHTML, "i"); zh.lang= "zh-cmn";


No todos los atributos HTML posibles se reflejan como setters / getters de JavaScript. Por ejemplo, https://developer.mozilla.org/en-US/docs/Web/API/Node definitivamente enumera textContent, pero no lang . Sugeriría usar siempre setAttribute / getAttribute, excepto posiblemente los atributos más básicos como "src" o "href".