Mam następujące kody dojo do tworzenia powierzchniowego elementu graficznego pod elementem 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()
narysuje grafikę prostokąta za pierwszym razem. Jeśli wywołam tę funkcję ponownie w href kotwicy w ten sposób:
<a href="javascript:drawRec();">...</a>
ponownie narysuje kolejną grafikę. To, czego potrzebuję, aby wyczyścić całą grafikę pod div, a następnie utworzyć ponownie. Jak mogę dodać kilka kodów dojo, aby to zrobić?
javascript
dojox.gfx
David.Chu.ca
źródło
źródło
Niestandardowe, ale szybkie i dobrze obsługiwane.
źródło
Przede wszystkim musisz raz stworzyć powierzchnię i trzymać ją w dogodnym miejscu. Przykład:
domNode
jest zwykle bez ozdób<div>
, które jest używane jako element zastępczy dla powierzchni.Możesz wyczyścić wszystko na powierzchni za jednym razem (wszystkie istniejące obiekty kształtu zostaną unieważnione, nie używaj ich później):
Wszystkie funkcje i metody związane z powierzchnią można znaleźć w oficjalnej dokumentacji na dojox.gfx.Surface . Przykłady użycia można znaleźć w
dojox/gfx/tests/
.źródło
źródło
elem.textContent = "";
jednak tylko dlatego, że jQuery to robi, nie oznacza, że nie jest błędne, na przykład stwissel mówi, że „innerHTML działa tylko wtedy, gdy masz do czynienia tylko z HTML. SVG tylko wewnątrz Usuwanie elementów będzie działać ”. Zobacz także inne istotne uwagi tutaj: stackoverflow.com/questions/3955229/ ...W Dojo 1.7 lub nowszym użyj
domConstruct.empty(String|DomNode)
:W starszych Dojo użyj
dojo.empty(String|DomNode)
(przestarzałe w Dojo 1.8):Każda z tych
empty
metod bezpiecznie usuwa wszystkie elementy podrzędne węzła.źródło
Z dokumentacji API dojo :
źródło
Jeśli szukasz nowoczesnego sposobu na zniszczenie wszystkich dzieci węzła> 1.7 Dojo, to jest to sposób:
Więcej informacji znajdziesz w dokumentacji „dom-construct”.
źródło
domConstruct.empty()
że w tym przypadku byłoby lepiej.