0

我在Firefox 扩展的上下文中工作。

问题

我正在尝试创建一个具有特定lang属性的新元素。我尝试了 如何在 JavaSript 中使用 lang 属性创建 HTML 元素中elt.lang = 'zh'给出的方法?不起作用。元素已创建但没有属性。lang

未按预期代码工作

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);

按预期代码工作

但是,当我使用该Element.setAttribute()方法时,它可以正常工作:

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

为什么elt.lang/dot-notation 方法不起作用?

4

2 回答 2

1

并非所有可能的 HTML 属性都反映为 javascript setter / getter。例如,https://developer.mozilla.org/en-US/docs/Web/API/Node肯定列出了 textContent,但没有列出lang. 我建议始终使用 setAttribute / getAttribute,但可能是最基本的属性,例如“src”或“href”。

于 2013-08-28T13:38:54.153 回答
1

问题

问题与环境有关(即扩展)。我在 XUL 上下文中,所以使用createElement()创建一个没有lang属性的 XUL 元素。

所以要解决问题和其他问题(无法选择插入的文本),我不得不强制 XHTML 命名空间使用createElementNS(ns, elt).

代码

var nsXHTML = "http://www.w3.org/1999/xhtml";
var wrapper = document.createElementNS(nsXHTML, "span");
var zh = document.createElementNS(nsXHTML, "i");
zh.lang= "zh-cmn";
于 2013-08-28T14:20:13.930 回答