Saya memiliki sepotong kode JavaScript yang membuat (menggunakan D3.js) svg
elemen yang berisi bagan. Saya ingin memperbarui bagan berdasarkan data baru yang berasal dari layanan web menggunakan AJAX, masalahnya adalah setiap kali saya mengklik tombol pembaruan, itu menghasilkan yang baru svg
, jadi saya ingin menghapus yang lama atau memperbarui kontennya.
Berikut ini cuplikan dari fungsi JavaScript tempat saya membuat svg
:
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
Bagaimana saya bisa menghapus svg
elemen lama atau setidaknya mengganti kontennya?
javascript
ajax
svg
d3.js
Sami
sumber
sumber
d3.select("svg").empty();
Jawaban:
Ini solusinya:
Ini adalah
remove
fungsi yang disediakan oleh D3.js.sumber
svg.selectAll("*").remove();
. Ini menghapus konten elemen meskipun diatursvg
variabel ke elemen pengelompokan (g
).Jika Anda ingin menyingkirkan semua anak,
akan menghapus semua konten yang terkait dengan svg.
Catatan : Ini disarankan jika Anda ingin memperbarui grafik.
sumber
Mengatur atribut id ketika menambahkan elemen svg juga dapat membiarkan d3 pilih jadi hapus () nanti pada elemen ini dengan id:
sumber
Saya punya dua grafik.
Ini menghapus semua bagan.
Ini berfungsi untuk menghapus bagan batang yang ada, tetapi kemudian saya tidak dapat menambahkan kembali bagan batang setelah
Sudah mencoba ini. Itu tidak hanya membiarkan saya menghapus bagan batang yang ada, tetapi juga membiarkan saya menambahkan kembali bagan batang baru.
Tidak yakin apakah ini cara yang benar untuk dihapus, dan tambahkan kembali bagan di d3. Ini bekerja di Chrome, tetapi belum diuji di IE.
sumber
Saya menggunakan SVG menggunakan D3.js dan saya memiliki masalah yang sama.
Saya menggunakan kode ini untuk menghapus svg sebelumnya tetapi gradien linier di dalam SVG tidak datang di IE
$ ("# container_div_id"). html ("");
kemudian saya menulis kode di bawah ini untuk menyelesaikan masalah
di sini saya menghapus g dan path sebelumnya di dalam SVG, menggantikan yang baru.
Menjaga gradien linier saya di dalam tag SVG di konten statis dan kemudian saya memanggil kode di atas, Ini berfungsi di IE
sumber
Anda juga bisa menggunakan jQuery untuk menghapus konten div yang berisi svg Anda.
sumber
Anda harus menggunakan
append("svg:svg")
, bukanappend("svg")
agar D3 membuat elemen dengan 'namespace' yang benar jika Anda menggunakan xhtml.sumber