4

次のコードスニペットがあります。

myPanel.getElement().setId("left-content");
//...
//...
Element e = DOM.getElementById("left-content");// this returns NULL!

アップデート

長いコードスニペットは次のとおりです。

public class RootComposite extends Composite
{
    public RootComposite(int comboSelectedIndex)
    {

        VerticalPanel verticalPanel = new VerticalPanel();
        initWidget(verticalPanel);
        VerticalPanel containerPanel = new VerticalPanel();
        containerPanel.setSpacing(1);
        verticalPanel.add(containerPanel);
        verticalPanel.setSize("100%", "100%");

        RightPanelMainComposite rightPanelMainComposite =  new RightPanelMainComposite();

        VerticalPanel rightcolVerticalPanel = new VerticalPanel();
        rightcolVerticalPanel.setStyleName("rightcol");
        VerticalPanel searchVerticalPanel = new VerticalPanel();
        searchVerticalPanel.setStyleName("search");
        rightcolVerticalPanel.add(searchVerticalPanel);
        searchVerticalPanel.add(rightPanelMainComposite);

        ContentComposite contentComposite = new ContentComposite();

        HorizontalPanel leftContentPanel = new HorizontalPanel();
        containerPanel.add(leftContentPanel);
        leftContentPanel.getElement().setAttribute("id", "left-content");

        DOM.getElementById("left-content"); // returns NULL !!!
        // ....
    }

上記のコンポジットがに追加されていRootPanelます。

4

2 に答える 2

10

DOM.getElementById要求されたウィジェットが実際にDOMにアタッチされている場合にのみ使用できます。コードはid、コンストラクターでを設定し、ウィジェットがまだアタッチされていない直後に対応する要素を要求することを示しています。ウィジェットは、onLoadメソッドが呼び出されたときにのみ実際にアタッチされます。

于 2011-02-07T12:14:06.007 に答える
6

を呼び出す前に、myPanelをDOM(たとえばRootPanel.get().add(myPanel))に追加しなかったと思いますDOM.getElementById("left-content")

于 2011-02-07T11:35:35.100 に答える