d3オブジェクトの属性値を増減するコードがあります。d3属性を増やす最も良い方法
私は、次を使用して、それをやった:
var diff=5;
d3Selector.attr("x",function(){
return Number(d3Selector.attr("x"))+diff;
});
単に+=
作品JSで。現在の値を取得して追加して設定するよりも、これを行うより良い方法はありますか?
以下は、Robert Longsonの提案で作成され、私はd3_v4を使用しています。ここでの問題は、数字の追加ではなく(文字列として)連結されていることです。を使用して解決しようとしましたが、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 [" _group "] [0] [0] [" attributes "] .cx.value + = diff' – SachiDangalla
@RobertLongson違いはバージョンの変更によるものですか?私はd3_v4で試して、コードスニペットを追加して質問を更新しました – SachiDangalla