Tengo los siguientes códigos de dojo para crear un elemento gráfico de superficie bajo un 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()
dibujará un rectángulo de gráficos por primera vez. Si vuelvo a llamar a esta función en un ancla href como esta:
<a href="javascript:drawRec();">...</a>
dibujará otros gráficos nuevamente. Lo que necesito para limpiar todos los gráficos debajo del div y luego crear de nuevo. ¿Cómo puedo agregar algunos códigos dojo para hacer eso?
javascript
dojox.gfx
David.Chu.ca
fuente
fuente
No estándar, pero rápido y bien soportado.
fuente
En primer lugar, debe crear una superficie una vez y tenerla a mano. Ejemplo:
domNode
es generalmente un sin adornos<div>
, que se utiliza como marcador de posición para una superficie.Puede borrar todo en la superficie de una vez (todos los objetos de forma existentes se invalidarán, no los use después de eso):
Todas las funciones y métodos relacionados con la superficie se pueden encontrar en la documentación oficial en dojox.gfx.Surface . Se pueden encontrar ejemplos de uso en
dojox/gfx/tests/
.fuente
fuente
elem.textContent = "";
sin embargo solo porque jQuery lo hace, no significa que no tenga errores, por ejemplo, stwissel dice "innerHTML solo funciona si solo se trata de HTML. Si hay SVG dentro de solo la eliminación de elementos funcionará ". Consulte también otras notas relevantes aquí: stackoverflow.com/questions/3955229/…En Dojo 1.7 o posterior, use
domConstruct.empty(String|DomNode)
:En Dojo anterior, use
dojo.empty(String|DomNode)
(en desuso en Dojo 1.8):Cada uno de estos
empty
métodos elimina de forma segura a todos los hijos del nodo.fuente
De la documentación de la API dojo :
fuente
Si está buscando una forma moderna> 1.7 Dojo de destruir a todos los hijos del nodo, esta es la forma:
Consulte la documentación de "dom-construct" para obtener más detalles.
fuente
domConstruct.empty()
que sería mejor en este caso.