tengo los siguientes códigos dojo para crear un elemento gráfico de superficie bajo un div:Eliminar todos los niños en DOM elementos div
....
<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() va a dibujar un rectángulo gráficos primera vez. Si llamo de nuevo a esta función en un href de anclaje como este:
<a href="javascript:drawRec();">...</a>
volverá a dibujar otro gráfico. Lo que necesito para limpiar todos los gráficos en el div y luego crear de nuevo. ¿Cómo puedo agregar algunos códigos de dojo para hacer eso?
Just to be pedantic --- la eliminación de los nodos DOM sin los objetos correspondientes JS dará lugar a pérdidas de memoria. –
@Eugene: ¿Podrías decir más sobre eso? –
@Tom: dojox.gfx crea objetos de JavaScript para comunicarse con el sistema de gráficos subyacente, que puede tener nodos DOM (SVG, VML) o no (Silverlight, Flash, Canvas). Eliminar los nodos DOM de DOM no elimina esos objetos JavaScript, y ** no elimina ** nodos DOM tampoco porque los objetos JavaScript todavía tienen referencias a esos nodos DOM. La forma correcta de manejar esta situación se describe en mi respuesta a esta pregunta. –