作者:小色米虫_524 | 2023-08-28 19:40
我有以下dojo代码在div下创建表面图形元素:
....
....
....
drawRec()
将第一次绘制矩形图形.如果我在锚点href中再次调用此函数,如下所示:
...
它会再次绘制另一个图形.我需要清理div下的所有图形,然后再次创建.如何添加一些dojo代码呢?
1> Maurice Perr..:
while (node.hasChildNodes()) {
node.removeChild(node.lastChild);
}
只是迂腐 - 删除没有相应JS对象的DOM节点会导致内存泄漏.
@Tom:dojox.gfx创建JavaScript对象以与底层图形系统进行通信,这些图形系统可能具有DOM节点(SVG,VML)或不具有DOM节点(Silverlight,Flash,Canvas).从DOM中删除DOM节点不会删除这些JavaScript对象,并且**也不会删除**DOM节点,因为JavaScript对象仍然具有对这些DOM节点的引用.我在这个问题的答案中描述了处理这种情况的正确方法.
@robocat它与IE无关:JS对象引用DOM对象将它们保存在内存中,底层JS对象通过其他JS对象的引用保存在内存中.例如:gfx表面引用其所有子项,组也引用其所有子项,依此类推.仅删除DOM节点是不够的.
@ david-chu-ca - 可能是Eugene(dojo GFX库的主要作者)的后期答案应该被标记为已接受的答案.尤金 - 谢谢你的澄清.
@Eugene:你能谈谈更多吗?
2> Chetan Sastr..:
node.innerHTML = "";
非标准,但速度快,支持良好.
与删除节点相比,*更慢*:http://jsperf.com/innerhtml-vs-removechild/15
似乎是HTML 5中的标准.上面的博客条目是用户错误.https://developer.mozilla.org/en-US/docs/DOM/element.innerHTML
IE不支持.检查:http://www.theogray.com/blog/2009/06/internet-explorer-unknown-runtime-error
3> Eugene Lazut..:
首先,你需要创建一个表面并将其保存在方便的地方.例:
var surface = dojox.gfx.createSurface(domNode, widthInPx, heightInPx);
domNode
通常是一个简单的,用作表面的占位符.
您可以一次性清除曲面上的所有内容(所有现有的形状对象都将失效,之后不要使用它们):
surface.clear();
所有与表面相关的函数和方法都可以在dojox.gfx.Surface的官方文档中找到.使用的例子可以在dojox/gfx/tests/
.
4> James..:
while(node.firstChild) {
node.removeChild(node.firstChild);
}
5> Brian C..:
在Dojo 1.7或更高版本中,使用domConstruct.empty(String|DomNode)
:
require(["dojo/dom-construct"], function(domConstruct){
// Empty node's children byId:
domConstruct.empty("someId");
});
在较旧的Dojo中,使用dojo.empty(String|DomNode)
(在Dojo 1.8中弃用):
dojo.empty( id or DOM node );
这些empty
方法中的每一个都安全地删除节点的所有子节点.
推荐阅读
-
如何解决《具有方法指针参数的默认值的模板》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《CSS转换在Edge中不起作用》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《在编译时检测c#版本》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《无法修改lua中的循环变量》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Pythonre不能拆分零宽度锚点?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《“具有此类的id,在调用save()之前必须手动分配该类的id”》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《这个数字在Bash的段错误信息中意味着什么?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Nginx返回路径的文件》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《在TypeScript中实例化一个类》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《缩放图像而不会丢失图像质量不起作用》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《NuGet包作者如何避免版本地狱?》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《为什么要在规范中单独列出?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《将文本数据存储在熊猫框架中,如何使用sklearn实现简单分类》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《在Swift中更改For循环中的对象属性》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Angular2中的路由-链接"['Name']"不解析为终端指令》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《在编译时检测运算符而不进行隐式转换》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《如何在php中使用preg_match?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《UICollectionView中的高内存使用率》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Haskell超时分歧计算》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《我怎样才能获得gulpfile的绝对路径?》经验,为你挑选了1个好方法。 ...
[详细]