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 !!!
        // ....
    }

上面的 Composite 被添加到RootPanel.

4

2 回答 2

10

DOM.getElementById仅当请求的小部件实际附加到 DOM 时才能使用。您的代码显示您id在构造函数中设置并在尚未附加小部件时立即请求相应的元素。您的小部件实际上仅在调用其onLoad方法时才附加。

于 2011-02-07T12:14:06.007 回答
6

我假设您RootPanel.get().add(myPanel)在调用DOM.getElementById("left-content").

于 2011-02-07T11:35:35.100 回答