删除div中的所有子DOM元素
我有以下的dojo代码来创build一个div下的表面graphics元素:
.... <script type=text/javascript> .... function drawRec(){ var node = dojo.byId("surface"); // remove all the children graphics var surface = dojox.gfx.createSurface(node, 600, 600); surface.createLine({ x1 : 0, y1 : 0, x2 : 600, y2 : 600 }).setStroke("black"); } .... </script> .... <body> <div id="surface"></div> ....
drawRec()将首次绘制一个矩形graphics。 如果我在这样的锚点href中再次调用这个函数:
<a href="javascript:drawRec();">...</a>
它会再次绘制另一个graphics。 我需要清除div下的所有graphics,然后重新创build。 我怎样才能添加一些dojo代码来做到这一点?
while (node.hasChildNodes()) { node.removeChild(node.lastChild); }
node.innerHTML = "";
非标准,但快速和良好的支持。
首先你需要创build一个表面,并保持在方便的地方。 例:
var surface = dojox.gfx.createSurface(domNode, widthInPx, heightInPx);
domNode
通常是一个简单的<div>
,它被用作表面的占位符。
您可以一次性清除表面上的所有内容(所有现有的形状对象将会失效,之后不要使用它们):
surface.clear();
所有表面相关的函数和方法可以在dojox.gfx.Surface官方文档中find。 使用示例可以在dojox/gfx/tests/
。
在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
方法都安全地删除节点的所有子节点。
while(node.firstChild) { node.removeChild(node.firstChild); }
从dojo API 文档 :
dojo.html._emptyNode(node);
如果你正在寻找一种现代的> 1.7 Dojo的方式来销毁所有节点的孩子,这是方式:
// Destroys all domNode's children nodes // domNode can be a node or its id: domConstruct.empty(domNode);
安全地清空DOM元素的内容。 empty()删除所有的子节点,但是保留节点。
查看“dom-construct”文档了解更多细节。
// Destroys domNode and all it's children domConstruct.destroy(domNode);
销毁一个DOM元素。 destroy()删除所有的孩子和节点本身。