16

GWT独自のによってHTML要素を取得する2つの方法を提供しますID

違いは何ですか(ある場合):

  • DOM.getElementById( "divID"):

ドキュメント全体で指定された一意のIDに関連付けられた要素を取得します。

@param id関連する要素が取得されるID
@return関連する要素、または何も見つからない場合はnull

  • Document.get()。getElementById( "divID"):

idがelementIdで指定されている要素を返します。そのような要素が存在しない場合は、nullを返します。複数の要素がこのIDを持っている場合、動作は定義されません。

@paramelementId要素の一意のID値
@一致する要素を返します

4

2 に答える 2

20

基本的に何もありません。GWTのライフサイクルのある時点で、DOM関連のコード全体がdomパッケージに書き直されました。各HTMLタグの新しいパッケージでは、DivElementこれらのタグに特定のメソッドを提供するなど、特定のElementクラスを使用できます。たとえば、あなたの例では、それを使用してdiv要素を検索する場合、を直接使用できますDivElement。両方のバージョンのコードは次のようになります。

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

また

DivElement divID = (DivElement) DOM.getElementById("divID").cast();

下位互換性を保つために、古いコードが保持されました。すべてのウィジェットクラスは、Elementによって返される古いクラスを使用しDOM.getElementByIdます。古いクラスが変更され、余分なものなしElementで新しいクラスが拡張されました。Elementつまり、基本的に同じです。一般に、を使用する必要がありますDocument.get()。これはすべて、要素を操作するときに多少混乱する可能性があります。

于 2012-07-26T14:26:49.847 に答える
8

見て:

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を返しますが、どちらも同じであり、同じ意味であるため、Javaキャスト構文または便利なメソッドを使用して継承階層を無視してキャストできます。ElementElementJavaScriptObject()JavaScriptObject.<T extends JavaScriptObject> cast()

ところで。ドキュメントはJSOオーバーレイタイプであるため、「ネイティブ」は;)thisを指しますthis

于 2012-07-27T22:57:34.580 に答える