2011-02-26 63 views
6

我在com.google.gwt.dom.client.Element类中看不到任何方法,它允许我获取元素节点的所有属性。我错过了什么?在GWT中,如何获取HTML DOM中元素的所有属性?

大概我可以通过放入本机代码来获得底层Javascript对象的属性数组?我知道结果是依赖于浏览器的,但似乎已知的解决方法。我没有深入到原生JS,所以如果有人能告诉我如何去做,那将是一个奖金。

回答

10

我在GWT寻找一种方便的方法,但很惊讶,我找不到一个。

大概我可以通过放入本机代码来获取底层JavaScript对象的属性数组?我知道结果是依赖于浏览器,...

是的,JSNI,您可以定义返回元素的“属性”属性作为一个合适的Java对象的方法:

public static native JsArray<Node> getAttributes(Element elem) /*-{ 
    return elem.attributes; 
}-*/; 

你可以像这样使用它:

final JsArray<Node> attributes = getAttributes(element); 
for (int i = 0; i < attributes.length(); i ++) { 
    final Node node = attributes.get(i); 
    String attributeName = node.getNodeName(); 
    String attributeValue = node.getNodeValue(); 
    ... 
} 
+0

谢谢,我会给它一个。 – 2011-02-27 08:43:18

+0

小点; elem.attributes不是一个数组(尽管它可以像一个访问) - 它实际上是一个https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap – 2013-06-12 05:38:26