代码之家  ›  专栏  ›  技术社区  ›  mck89

用javascript在IE的文本节点上设置数据

  •  0
  • mck89  · 技术社区  · 14 年前

    var a=document.createElement("div");
    a.test="test";
    alert(a.test); //Works and shows "test"
    
    var a=document.createTextNode("text");
    a.test="test";  //Throws an error
    

    你知道解决这个问题的方法吗?或者,是否有一个属性在文本节点上几乎是无用的,允许我在其上设置数据?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Tim Down    5 年前

    最佳方案:不要这样做。

    一般来说,将属性分配给主机对象(即浏览器提供的任何内容,而不是本机JavaScript对象)是个坏主意。主机对象没有义务允许这种扩展(也称为“expandos”),而许多(例如,IE中的ActiveX对象)没有。此外,IE允许您使用 document.expando = false; .

    另一种选择是使用 jshashtable (免责声明:我写的)存储文本节点的数据。它是一个哈希表实现,允许您使用任何对象(不仅仅是字符串)作为键。

        2
  •  0
  •   jhleath    14 年前

    createTextNode 使文本与元素相反。因此,不能为其指定属性。

    我想试试 createElement("p") (或任何元素类型)如果要显示文本。

    编辑:这是不正确的。看看蒂姆·唐恩的答案。