Gwt DOM和文档类的getElementById方法之间的差异

Gwt DOM和文档类的getElementById方法之间的差异,gwt,dom,Gwt,Dom,GWT提供了两种通过其唯一的ID检索HTML元素的方法 以下各项之间有什么区别(如果有): DOM.getElementById(“divID”): 获取与整个域中给定唯一id关联的元素 文件 @param id要检索其关联元素的id @返回关联的元素,如果找不到,则返回null Document.get().getElementById(“divID”): 返回其id由elementId给定的元素。如果不存在这样的元素,则返回null。如果有多个行为,则不定义行为 元素具有此id @p

GWT
提供了两种通过其唯一的
ID
检索HTML元素的方法

以下各项之间有什么区别(如果有):

  • DOM.getElementById(“divID”):
获取与整个域中给定唯一id关联的元素 文件

@param id要检索其关联元素的id
@返回关联的元素,如果找不到,则返回null

  • Document.get().getElementById(“divID”):
返回其id由elementId给定的元素。如果不存在这样的元素,则返回null。如果有多个行为,则不定义行为 元素具有此id

@param elementId元素的唯一id值
@返回匹配的元素


基本上没什么。在GWT生命周期的某个时刻,整个DOM相关代码被重写到
DOM
包中。在每个HTML标记的新包中,有一个特定的元素类可用,如
DivElement
,为这些标记提供特定的方法。例如,在您的示例中,如果要使用它查找div元素,可以直接使用
DivElement
。两个版本的代码如下所示:

DivElement divID = (DivElement) Document.get().getElementById("divID");

为了向后兼容,保留了旧代码。所有小部件类都使用旧的
元素
类,该类也由
DOM.getElementById
返回。旧的
元素
类已更改,并扩展了新的
元素
类,没有任何额外的。所以他们基本上是一样的。通常,您应该只使用
Document.get()
。在使用元素时,这一切都会让人有些困惑。

看:

com.google.gwt.dom.client.Document

public final native Element getElementById(String elementId) /*-{
    return this.getElementById(elementId);
}-*/;
com.google.gwt.user.client.DOM

public static Element getElementById(String id) {
    return Document.get().getElementById(id).cast();
}
所以这只是一种“方便的包装方法”

但是,尽管它们都从不同的包返回
Element
这些ara
Element
s,而且由于这两个
Element
s都是
JavaScriptObject
并且都是相同的意思,您可以使用java转换语法
()
或使用方便的方法
JavaScriptObject。cast()


顺便说一句,文档是JSO覆盖类型,所以“本机
this
”指向
this
;)

事实上,这是非常令人困惑的。特别是因为新的
元素继承了旧元素。很好的解释。简明扼要
public static Element getElementById(String id) {
    return Document.get().getElementById(id).cast();
}