2
我使用Dojo和JavaScript来执行一个简单的功能:使用Dojo,我该如何动态刷新div?
- 找到一定的DIV ID为
- 更新该div样式部分
下面是一个包含代码的模块上述意图。调整大小功能从主模块调用。原始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(),update()与DOM节点但不在Dojo上下文中的例子。有没有办法动态刷新DOM节点而不会出错?
感谢,
驰
谢谢本。我只是尝试第一种方法,它与我的原始代码具有相同的效果(** no **更新了预期样式。)当我添加刷新时,它按预期工作(使用新样式)。对于第二种方法,它添加了新的类,但以某种方式显示原始样式(我怀疑它已经被写过了),因此它不能按预期工作。 - Chi – user3570980
刷新它的工作原因是因为JS错误。它会停止执行下一条指令。所以我的赌注是:在'_setPosition'之后,其他的东西正在改变风格。你应该看看接下来会发生什么。你用第二种方法描述的问题往往证实我的赌注。 – ben
嗨,本。如果样式在我的模块中没有被有效地改变,那么主模块将把样式转换回默认值。开发人员曾解释说,由于某种原因,JS错误导致样式变得有效,所以主模块之后不再修改样式。我更愿意调用正确的功能来实现变化,而不是偶然发生JS错误。 – user3570980