У меня есть фрагмент кода JavaScript, который создает (используя D3.js) svg
элемент, который содержит диаграмму. Я хочу обновить диаграмму на основе новых данных, поступающих из веб-службы, использующей AJAX, проблема в том, что каждый раз, когда я нажимаю на кнопку обновления, она генерирует новуюsvg
, поэтому я хочу удалить старую или обновить ее содержимое.
Вот фрагмент из функции JavaScript, где я создаю svg
:
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
Как я могу удалить старый svg
элемент или хотя бы заменить его содержимое?
javascript
ajax
svg
d3.js
Сами
источник
источник
d3.select("svg").empty();
Ответы:
Вот решение:
Это
remove
функция, предоставляемая D3.js.источник
svg.selectAll("*").remove();
. Это очищает содержимое элемента, даже еслиsvg
переменная установлена в элемент группировки (g
).Если вы хотите избавиться от всех детей,
удалит весь контент, связанный с SVG.
Примечание . Рекомендуется, если вы хотите обновить график.
источник
Установка атрибута id при добавлении элемента svg также позволяет d3 выбирать, так что remove () позже для этого элемента по id:
источник
У меня было две диаграммы.
Это удалило все графики.
Это работало для удаления существующей гистограммы, но потом я не мог повторно добавить гистограмму после
Пробовал это. Это не только позволило мне удалить существующую гистограмму, но и позволило мне снова добавить новую гистограмму.
Не уверен, что это правильный способ удаления, и заново добавьте диаграмму в d3. Он работал в Chrome, но не тестировал в IE.
источник
Я использую SVG, используя D3.js, и у меня была та же проблема.
Я использовал этот код для удаления предыдущего SVG, но линейный градиент внутри SVG не были в IE
$ ( "# Container_div_id") HTML ( "").
Затем я написал код ниже, чтобы решить эту проблему
здесь я удаляю предыдущий g и путь внутри SVG, заменяя новым.
Сохраняя мой линейный градиент внутри тегов SVG в статическом содержимом, а затем я вызвал приведенный выше код, это работает в IE
источник
Вы также можете просто использовать jQuery для удаления содержимого div, содержащего ваш svg.
источник
Вы должны использовать
append("svg:svg")
, неappend("svg")
так, чтобы D3 делал элемент с правильным «пространством имен», если вы используете xhtml.источник