我想在演示者中使用DOM或文档界面访问uibinders中的元素,是否可能。
想要获取元素并将处理程序附加到它。
我在uibinders中有输入,选择,div,span元素。是否有可能实现。
我试图使用DOM和Document它返回null。
<g:HTMLPanel styleName="{style.content1}" ui:field="containerPanel1">
<div class="{style.rightAlign}" id="container">
<g:FormPanel styleName="{style.formLayout}" ui:field="formPanel1">
<g:HTMLPanel width="100%" height="100%">
<div id="inner" class="{style.horiCon}">
<div class="{style.label}">
<ui:msg key="name" description="Name of the user">Name</ui:msg>
</div>
<input type="text" id="firstName" name="name"
placeholder="FirstName" class="{style.textboxFirstName}" />
<input type="text" id="lastName" placeholder="LastName"
name="name" class="{style.textboxLastName}" />
<span id="nameError" class="{style.errorMsgHide}">Error</span>
</div>
</g:HTMLPanel>
</g:FormPanel>
</div>
</g:HTMLPanel>
演示
@Override
protected void onBind() {
super.onBind();
Window.alert("" + DOM.getElementById("firstName"));
// returns null;
}
@Override
protected void onReveal() {
super.onReveal();
Window.alert("" + DOM.getElementById("firstName"));
// returns <input class="GG1RCY0BHB" id="firstName" name="name" placeholder="FirstName" type="text">
}
Onbind()返回null,onreveal()返回
之后我做
TextBox.wrap(DOM.getElementById("firstName"));
我正在
java.lang.AssertionError: A widget that has an existing parent widget may not be added to the detach list
at com.google.gwt.user.client.ui.RootPanel.detachOnWindowClose(RootPanel.java:136)
at com.google.gwt.user.client.ui.TextBox.wrap(TextBox.java:69)
问题是什么?我可以在演示者中使用Rootpanel来获取参考吗? 请帮帮我。
先谢谢, 何。
答案 0 :(得分:0)
要访问DOM
元素,首先需要将元素附加到DOM
,否则它将返回null
。您可以在DOM.getElementByID("id")
java类中使用onLoad()
覆盖ui-binder
方法。
@Override
void onLoad()
{
DOM.getElementByID("id");
}
你提到uibinders中的输入,选择,div,span元素。为什么不使用ui:field
并直接访问该字段来添加处理程序等?只是一个想法。
选择GWT
ListBox
FlowPanel
同样是div。