최근에 dojo에서 작업하기 시작했습니다. dijit.byId()는 dojo.onLoad() 내부에이 호출을 넣더라도 undefined를 반환합니다.dijit.byId()는 dojo.addOnLoad()에서도 undefined를 반환합니다.
<script type="text/javascript">
dojo.require("dijit.form.Select");
function myhandler(ev)
{
var mydiv = dojo.byId('mydivid');
if (ev == 'Disable') {
mydiv.style.display = 'none';
} else {
mydiv.style.display = 'block';
}
}
function regHandler()
{
var item = dijit.byId("myState");
alert(item);//shows undefined
dojo.connect(dijit.byId("myState"), 'onChange', myhandler);
}
dojo.addOnLoad(regHandler);
</script>
<select input class="dialogInputElement" dojoAttachPoint="myState" dojoType=dijit.form.Select name="myState" id="myState" value='Enable' style="margin-bottom:5px">
<option value="Enable">Enable</option>
<option value="Disable">Disable</option>
</select>
dijit.byId() 호출을 setTimeout()으로 지연하면 정상적으로 작동합니다. dojo 버전은 1.4.2입니다. 모든 해결 방법이나 해결 방법을 알려드립니다.
미리 감사드립니다.
Dojo의 onLoad 이벤트가 dijits가 구문 분석되고 인스턴스화되었다는 것을 보장하지 못하기 때문에 'dijit.byId'에서 사용할 수 있습니다. dojoConfig에서'parseOnLoad : true'를 가지고 있습니까? 'dojo.parser.parse();'를'regHandler'에 추가하면 (코드 나머지 부분 이전에) 어떻게됩니까? – Frode