我正在尝试展示一个组件,
<div dojoType="dojox.layout.TableContainer" cols="2" labelWidth="50%" colspan=2 id="durationPane" style="display: none;margin-left: 9px;" showLabels=false>
<div dojoType="dijit.form.DateTextBox" required="true" onChange="var x=arguments[0];x.setDate(x.getDate()+1);dijit.byId('toDate').constraints.min = x;" constraints="{datePattern:'MMM dd yyyy'}" label=" From Date :" id="fromDate" placeHolder="From Date" style="margin-bottom: 50px"></div>
<div dojoType="dijit.form.DateTextBox" require="true" onChange="var x=arguments[0];x.setDate(x.getDate()-1);dijit.byId('fromDate').constraints.max =x;" constraints="{datePattern:'MMM dd yyyy'}" label="To Date :" id="toDate" placeHolder="To Date" name="vpnReport._toDate" ></div>
</div>
dijit.byId('durationPane').show();
但它没有显示出来。
答案 0 :(得分:3)
这是一些反复出现的问题,有一些Dojo“动画”效果,如show,hide,wipeIn,wipeOut等。出于某种原因,如果你想让页面元素开始隐藏,那么你可以向后显示它们,你无法初始化他们在CSS中使用“ display:none ”或“ visibility:hidden ”。
三种不同的解决方法(所有这些都暗示您没有在“durationPane”样式中设置“ display:none ”):
从元素可见开始,然后隐藏它onload,例如
dojo.ready(function() { dijit.byId('durationPane').hide(); });
从可见元素开始,然后添加 display:none onload,例如
dojo.style('durationPane', { 'display' : 'none' });
这将做你想要的。如果有人在那里知道为什么Dojo有这种奇怪的行为,并且如果有更优雅的方法来解决这个问题,请告诉我们......