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”):
@返回关联的元素,如果找不到,则返回null
- Document.get().getElementById(“divID”):
@返回匹配的元素
基本上没什么。在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
这些araElement
s,而且由于这两个Element
s都是JavaScriptObject
并且都是相同的意思,您可以使用java转换语法()
或使用方便的方法JavaScriptObject。cast()
顺便说一句,文档是JSO覆盖类型,所以“本机
this
”指向this
;) 事实上,这是非常令人困惑的。特别是因为新的元素继承了旧元素。很好的解释。简明扼要
public static Element getElementById(String id) {
return Document.get().getElementById(id).cast();
}