【问题标题】:How do you access a custom XHTML attribute with JavaScript?如何使用 JavaScript 访问自定义 XHTML 属性?
【发布时间】:2009-03-26 08:58:36
【问题描述】:

我有以下 XHTML:

<span id="myid" cus:att="myvalue" xmlns:cus="http://mycompany.com/customnamespace">
</span>

是否可以使用 javascript 访问自定义属性?我有代表跨度的元素。做myElement.att不行,不知道怎么指定命名空间?

【问题讨论】:

  • 您需要指定页面是作为 text/html 还是 application/xhtml+xml 提供,因为答案会有所不同。
  • @Alohci,我仍然有兴趣看到这两个答案。
  • 在 text/html 中,命名空间是一种错觉,而您所拥有的是一个名称中带有冒号的属性。 Annakata的回答有效。在 application/xhtml+xml 中,命名空间是真实的。我还没有测试过,但我希望您需要 getAttributeNS() 才能访问该属性。
  • @Alochi,谢谢,这很有意义。把它写成答案,它就会得到投票。

标签: javascript xhtml attributes


【解决方案1】:

通常来说,您可以直接访问它,即element.attribute,但命名空间会使这稍微复杂化:

element.getAttribute("namespace:attribute") //the nuclear x-browser option

所以要非常清楚,这将是这样的:

document.getElementById('myid').getAttribute('cus:att')

【讨论】:

  • 它可以工作,但他必须先找到元素,该元素没有ID,也没有类,也没有名称。将 DOM 元素用作“全局”元素不是一个好习惯,您可能会被烧毁。
  • 我的问题是没有获取元素,但我会将 id 添加到问题中。
  • @Bogdan - 我几乎不建议他做任何全局性的事情,我只是在(正确)假设 OP 已经能够选择元素的情况下提供一般形式
  • @annakata 当然,我没有说你错了,但现在答案非常好。 +1 :)
  • 我会接受这个答案,但有一件事困扰着我。为此,我需要知道作者为命名空间选择的别名。
【解决方案2】:

getAttribute 方法有一个特殊版本,专门用于访问命名空间属性:getAttributeNS。使用您的示例 XHTML,以下 JavaScript 代码:

document.getElementById("myid").getAttributeNS("http://mycompany.com/customnamespace", "att");

...将返回“myvalue”。

您可以阅读有关getAttributeNS 方法here 的更多信息。

史蒂夫

【讨论】:

  • IE 不支持getAttributeNS
  • 当文档是 XHTML-served-as-HTML 时也不起作用。它需要一个适当的 XML 解析器来支持命名空间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多