Ive получил функцию, которая добавляет div в качестве дочернего элемента в dijit/layout/conentpane. Проблема, с которой я столкнулась, заключается в том, что после добавления этого div я не могу ссылаться на нее с помощью dom.byId: функция, которая создает этот div, вызывается из события щелчка элемента меню:dom.byId возвращает undefined после того, как элемент был добавлен
пункт меню:
<div id="miLMWS" data-dojo-type="dijit/MenuItem" data-dojo-props="onClick:function(){SetPage('LMWS');}">Watershed</div>
функция OnClick (SetPage):
....
function (dom, parser, registry, ready, WatershedMap, OWOWMapGallery) {
window.SetPage = function (pg) {
//set the page depending on the menu item clicked
ClearWidget();//destroys previous widget deleting the div
AddToolDiv();//add the div
switch (pg) {
case 'LMWS':
var test = dom.byId("tool"); //this is undefined
//WS = new WatershedMap({}, "tool");
break;
}
};
...
addDivFunction:
function AddToolDiv() {
//add page div (node where template will be placed in
var tool = document.createElement("div");
tool.setAttribute("id", "tool");
var ContentContainer = registry.byId("MainContent");
ContentContainer.set("MainContent", tool);
var test = dom.byId("tool");//this is undefined
}
Каждый раз, когда нажимается элемент меню, новый пользовательский виджет загружается в div инструмента. (Существует функция ClearWidget, которая уничтожает старый виджет и инструмент div). Я думаю, что, возможно, это связано с вызовом функции из события onClick? Когда я вызываю AddToolDiv, когда страница сначала загружает тестовую переменную, она относится к инструменту div. Любая помощь будет оценена по достоинству.
Благодаря
Спасибо, что мне удалось получить ссылку, используя this.tool = document.createElement ("div"); Теперь я пытаюсь использовать его при создании нового виджета: WS = new WatershedMap ({}, this.tool); но я получаю не могу прочитать идентификатор свойства null? – pvitt
вы можете предоставить обновленный код или настроить что-то в jsfiddle, скорее всего это будет проблема с областью, в которой вы создаете свой div и где вы создаете свой виджет, еще одна вещь вместо использования document.createelement попробуйте использовать domconstruct.create. Пожалуйста, предоставьте дополнительную информацию – mannyyysh
Я использовал: this.tool = domConstruct.create ("div"); и получаю тот же результат. Я посмотрю, смогу ли я что-нибудь настроить на jsfiddle Спасибо – pvitt