Я использую Dojo и Javascript, чтобы выполнить простую функцию:Использование Dojo, как я могу обновить div динамически?
- найти определенный DIV с ID
- обновления, ДИВ раздел стиля
Ниже модуль, который содержит код вышеупомянутое намерение. Функция изменения размера вызывается из основного модуля. Оригинальный стиль div устанавливается в основном модуле: однако, всякий раз, когда происходит «изменение размера», основной модуль вызывает эту функцию изменения размера для обновления с другим стилем.
define(['dojo/_base/declare',
'dojo/query',
'dojo/_base/html'
],
function(declare, query, html) {
return declare([], {
baseClass: 'jimu-panel jimu-bottom-panel',
resize: function() {
var someNode = query("#widgets_panel")
if (someNode != null) {
// found it
this._setPosition(someNode);
} else {
console.error ("Cannot find the node");
};
},
_setPosition: function (somenode) {
// set the style
// refresh the node
html.setStyle (somenode, "left", "10px");
html.setStyle (somenode, "right", "auto");
html.setStyle (somenode, "bottom", "20px");
html.setStyle (somenode, "top", "auto");
html.setStyle (somenode, "position", "absolute");
somenode.refresh();
}
});
});
При запуске программы через браузер, консоль ошибок говоря, что обновление() не является функцией. Тем не менее, div был обновлен с правильной настройкой стиля.
Если я удалю оператор node.refresh(), div НЕ обновляется и отображается с неправильным стилем. Конечно, ошибок нет.
я исследовал эту тему и нашел несколько примеров использования Refresh(), обновление() с узлом DOM, но не в контексте Dojo. Есть ли способ обновить узел DOM динамически без ошибок?
Спасибо,
Chi
Thanks Ben. Я просто попробую первый метод и имеет тот же эффект, что и мой исходный код (** нет ** обновление предполагаемого стиля.) Когда я снова добавляю обновление, он работает как ожидалось (с новым стилем). Для второго метод, он добавляет новый класс, но каким-то образом демонстрирует оригинальный стиль (я подозреваю, что он был написан позже), поэтому он не работает должным образом. --Chi – user3570980
с обновлением работает из-за ошибки JS. Он останавливает выполнение следующих инструкций. Итак, моя ставка: что-то другое меняет стиль сразу после '_setPosition'. Вы должны увидеть, что будет дальше. Проблема, которую вы описываете со вторым методом, как правило, подтверждает мою ставку. – ben
Привет, Бен. Основной модуль изменит стиль назад до значения по умолчанию, если стиль не был эффективно изменен в моем модуле. Разработчик объяснил, что по какой-то причине ошибка JS привела к тому, что стиль был эффективным, поэтому он не был снова изменен основным модулем. Я предпочитаю использовать правильную функцию для эффективного изменения, чем случайно с ошибкой JS. – user3570980