2010-09-09 16 views
27

, bu komutla bir <div> eleman temizleyebilirsiniz:Bir SVG öğesinin içeriğini temizlemenin kolay bir yolu var mı? HTML'de

div.innerHTML = ""; 

Bir <svg> eleman varsa eşdeğer var mı? innerHTML veya innerXML veya hatta innerSVG yöntemini bulamıyorum.

ben SVG DOM XML DOM bir üst kümesidir biliyorum, bu yüzden böyle bir şey yapabileceğini biliyorum:

while (svg.lastChild) { 
    svg.removeChild(svg.lastChild); 
} 

Ama bu sıkıcı ve yavaş hem de. SVG öğesini temizlemek için daha hızlı mı yoksa daha kolay mı?

cevap

21

Zaten tek bir yanıt verdiniz: her zaman tüm çocukları devredebilir ve kaldırabilirsiniz. Çok fazla çocuk düğümünüz olduğunu düşünüyorsanız, svg düğümünü boş bir ile değiştirmek isteyebilirsiniz. Eğer svg düğümünüzün bazı özellikleri varsa, tüm çocuk düğümlerini yerleştirdiğiniz bir etiket kullanabilir ve ardından düğümü boş bir ile değiştirebilirsiniz. jQuery kullanıyorsanız

+0

Değiştirmek iyi bir fikirdir - teşekkürler! –

0

bunu kullanın? Ayrıca orada http://keith-wood.name/svg.html

Raphael: Ben ile trol ve onların .destroy() yöntemleri yapıyoruz kim olduğunu görmek için cazip olacaktır jQuery SVG vs. Raphael

.

+2

görünüyor: paperproto.clear = function() { var c = this.canvas; iken (c.firstChild) { c.removeChild (c.firstChild); } – robertc

0
element = document.getElementById("elementID"); 
element.parentNode.removeChild(element); 

Ben genişliği ve bozulmamış yüksekliği gibi diğer özelliklerini bırakarak sadece SVG

$("#svgid").empty(); 

Bu deletes all child elements

yapabilirsiniz http://www.carto.net/svg/manipulating_svg_with_dom_ecmascript/

+0

Bu, öğenin kendisini boş bırakmak yerine kaldırır, ancak gerçekten SVG için çalışır. – howard10

+0

Tüm elemanın işini nasıl kaldırıyor? Bu sorulan şey değil. –

31

fikrim var .

+0

Bu tam olarak aradığım şeydi. – QueueHammer

+2

Kaldırır tags :( –

+0

john ktejik'in commnet'inde genişletmek için Boş() 'ı kullanarak tüm tanımları temizler. Döngüyü kullanarak sadece kaldırılan alt öğe ile ilgili tanımları temizler. – ouflak

0

svg.text("")'u denedim ve işe yarıyor gibi görünüyor. Tüm iç metni temizler, öznitelikleri korur.

+0

' işlev değil 'hatası alıyorum –

+0

Soru jQuery etiketini içermiyorsa, bunu kullandığınızı belirtmeden bir yanıt olarak göndermeyin. – theonlygusti

7

d3.js. Bu svg tüm içerik düğümleri kaldıracaktır.

svg.selectAll("*").remove(); 
+0

hata: undefined bir işlev değil –

0

Klon kullanabilir ve öğeyi klonlanmış olanla değiştirebilirsiniz.

var parentElement = svg.parentElement 
    var emptySvg = svg.cloneNode(false); 
    parentElement.removeChild(svg); 
    parentElement.appendChild(emptySvg); 

Bu

önce eleman almak ve eklemek isteyebilirsiniz, sonunda svg ekler accordinaly

5

Ben klonlanmış biriyle eleman klon kullanmak ve değiştirme kabul edersiniz.

Sadece bir satır kodu: onlar Aseem tam olarak ne yapıyoruz gibi

svg.parentNode.replaceChild(svg.cloneNode(false), svg); 
İlgili konular