У меня есть часть кода, где я хочу увеличивать/уменьшать значения атрибутов объектов d3.Лучший способ увеличить атрибут d3
Я сделал это, используя следующие:
var diff=5;
d3Selector.attr("x",function(){
return Number(d3Selector.attr("x"))+diff;
});
В JS просто +=
работы. Есть ли лучший способ сделать это, чем получить текущее значение и добавить и установить его снова?
Данное предложение было создано с предложением Robert Longson и я использую d3_v4. Проблема здесь в том, что они объединены (как строки), а не с добавлением числа, которые я пытался решить, используя Number()
, но он дает ошибку, говорящую о Must be lvalue
.
function mov() {
var diffX = 5;
d3.select("#ee")["_groups"][0][0]["attributes"].x.value += diffX;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.3.0/d3.js"></script>
<button onclick="mov()">Click to move</button>
<br>
<svg width="400" height="400">
<rect id="ee" x="10" y="10" width="100" height="100" />
</svg>
d3Selector [0] [0] .x.baseVal.value + = diff; работа для вас. Если не создать скрипт или фрагмент стека, который можно запустить, чтобы я мог показать вам, что делать и проверить свой ответ. –
Нет, но это работает: 'd3child [" _ groups "] [0] [0] [" attributes "]. Cx.value + = diff' – SachiDangalla
@RobertLongson Является ли разница, вызванная изменением версии? Я попытался с d3_v4 и обновил вопрос, добавив фрагмент кода – SachiDangalla