如何添加" loading"从父母中删除后的元素?

时间:2015-01-12 12:05:16

标签: gwt

好的,在war/MyProject.html,我有:

<body>
   <div id="loading">   
        <div id="waitingForLoading"></div>
            <BR/>
        <img src="../images/loading.gif" />

  </div>
...
</body>
MyProject.java

中的

public class OfflineMatching implements EntryPoint {
   @Override
   public void onModuleLoad() {
        // this code works fine
        if(DOM.getElementById("loading")!=null){

            DOM.getElementById("loading").removeFromParent();
        }


        Button myButton=new Button("Enter Main Page");
        RootPanel.get().add(myButton);
        myButton.addClickHandler(new ClickHandler(){

           @Override
           public void onClick(ClickEvent event) {
               // this code does not work
               if(DOM.getElementById("loading")==null){
                 DOM.appendChild(RootPanel.getBodyElement(), DOM.createElement("loading"));
               }
           }
        });
   }
}

那么,我做错了什么? 为什么这段代码不起作用?

 // this code does not work
           if(DOM.getElementById("loading")==null){
             DOM.appendChild(RootPanel.getBodyElement(), DOM.createElement("loading"));
           }

1 个答案:

答案 0 :(得分:1)

DOM.createElement(String tagName)会创建一个<tagname>元素。因此,如果您将"loading"传递给它,它将创建一个<loading>元素。

要获得快速解决方法,您可以使用RootPanel.get,然后在小部件上调用setVisible

// onModuleLoad:
RootPanel.get("loading").setVisible(false);

// onClick:
RootPanel.get("loading").setVisible(true);

但更好的方法是在GWT中创建加载<div>作为窗口小部件,只需在其实例上调用setVisible,而不依赖于ID。