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".