Eu tenho os seguintes códigos dojo para criar um elemento gráfico de superfície em uma 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()
irá desenhar um retângulo gráfico pela primeira vez. Se eu chamar essa função novamente em uma âncora href assim:
<a href="javascript:drawRec();">...</a>
desenhará outros gráficos novamente. O que eu preciso para limpar todos os gráficos sob a div e depois criar novamente. Como posso adicionar alguns códigos dojo para fazer isso?
javascript
dojox.gfx
David.Chu.ca
fonte
fonte
Não padronizado, mas rápido e bem suportado.
fonte
Primeiro, você precisa criar uma superfície uma vez e mantê-la em algum lugar à mão. Exemplo:
domNode
geralmente é um sem adornos<div>
, usado como espaço reservado para uma superfície.Você pode limpar tudo na superfície de uma só vez (todos os objetos de forma existentes serão invalidados, não os use depois disso):
Todas as funções e métodos relacionados à superfície podem ser encontrados na documentação oficial em dojox.gfx.Surface . Exemplos de uso podem ser encontrados em
dojox/gfx/tests/
.fonte
fonte
elem.textContent = "";
no entanto, apenas porque o jQuery faz isso não significa que não seja um buggy, por exemplo, stwissel diz que "innerHTML funciona apenas se você estiver lidando apenas com HTML. Se houver, por exemplo, SVG dentro de apenas remoção de elemento funcionará ". Veja também outras notas relevantes aqui: stackoverflow.com/questions/3955229/...No Dojo 1.7 ou mais recente, use
domConstruct.empty(String|DomNode)
:No Dojo antigo, use
dojo.empty(String|DomNode)
(descontinuado no Dojo 1.8):Cada um desses
empty
métodos remove com segurança todos os filhos do nó.fonte
Na documentação da API dojo :
fonte
Se você estiver procurando por uma maneira moderna> Dojo> de destruir todos os filhos de nós, esta é a maneira:
Verifique a documentação "dom-construct" para mais detalhes.
fonte
domConstruct.empty()
seria melhor neste caso.