元素:getAttributeNS() 方法

getAttributeNS() 方法是 Element 接口的方法,用于返回指定命名空间和名称的属性的字符串值。如果指定的属性不存在,则返回的值将是 null""(空字符串);有关详细信息,请参阅 备注

如果您正在使用 HTML 文档,并且不需要将请求的属性指定为特定命名空间的一部分,请使用 getAttribute() 方法。

语法

js
getAttributeNS(namespace, name)

参数

命名空间

要在其中查找指定属性的命名空间。

名称

要查找的属性的名称。

返回值

指定属性的字符串值。如果属性不存在,则结果为 null

注意: DOM 规范的早期版本将此方法描述为返回不存在属性的空字符串,但通常不会以这种方式实现,因为 null 更合理。DOM4 规范现在说明此方法应该对不存在的属性返回 null。

示例

以下 SVG 文档读取自定义命名空间中 foo 属性的值。

xml
<svg xmlns="http://www.w3.org/2000/svg"
    xmlns:test="http://www.example.com/2014/test" width="40" height="40">

  <circle id="target" cx="12" cy="12" r="10" stroke="#444"
      stroke-width="2" fill="none" test:foo="Hello namespaced attribute!"/>

  <script>
    const ns = 'http://www.example.com/2014/test';
    const circle = document.getElementById('target');

    console.log(`attribute test:foo: "${circle.getAttributeNS(ns, 'foo')}"`);
  </script>
</svg>

在 HTML 文档中,必须使用 test:foo 访问属性,因为不支持命名空间。

html
<!doctype html>
<html lang="en-US">
  <head>
    <meta charset="UTF-8" />
    <title>getAttributeNS() test page</title>
  </head>
  <body>
    <svg
      xmlns="http://www.w3.org/2000/svg"
      xmlns:test="http://www.example.com/2014/test"
      width="40"
      height="40">
      <circle
        id="target"
        cx="12"
        cy="12"
        r="10"
        stroke="#444"
        stroke-width="2"
        fill="none"
        test:foo="Foo value" />
    </svg>

    <script>
      const ns = "http://www.example.com/2014/test";
      const circle = document.getElementById("target");
      console.log(`Attribute value: ${circle.getAttribute("test:foo")}`);
    </script>
  </body>
</html>

备注

getAttributeNS()getAttribute() 的区别在于它允许您进一步指定请求的属性是特定命名空间的一部分,如上面的示例所示,其中属性是虚构的 "test" 命名空间的一部分。

在 DOM4 规范之前,此方法被指定为返回空字符串而不是不存在属性的 null。但是,大多数浏览器返回 null。从 DOM4 开始,规范现在说明返回 null。但是,一些旧的浏览器返回空字符串。出于这个原因,如果您有可能在指定元素上不存在请求的属性,则应使用 hasAttributeNS() 检查属性是否存在,然后再调用 getAttributeNS()

规范

规范
DOM 标准
# ref-for-dom-element-getattributens①

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参见