"loading" 元素从 Parent 中删除后如何添加回来?
How to add back the "loading" Element after removed it from Parent?
好的,在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"));
}
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。
好的,在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"));
}
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。