2015-01-12 1 views
1

Хорошо, в 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

DOM.createElement(String tagName)<tagname> создает элемент. Итак, если вы пройдете "loading", он создаст элемент <loading>.

Для быстрого решения проблемы, вы можете использовать RootPanel.get, а затем вызвать setVisible на виджете:

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

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

Но лучше было бы создать нагрузку <div> как виджет в GWT и просто вызвать setVisible на его например, не полагаясь на идентификаторы.

Смежные вопросы