当前是否存在任何内置的javascript
方法,可以直接访问svg
transform =translate(x,y)
的x
或y
?
例如,下面的最小样本,我正在处理svg
元素
第一个
并且该元素包含很少的现有圆。x1c 0d1x
我想获取每个圆的transform=translate(x,y)
x
值,并使用自定义函数更改它。
我目前的做法如下,如果有一个内置的(vanilla和/d3)方法可以直接访问x
或transform=translate
的y
,我希望避免编写regex
document.querySelectorAll('circle').forEach(
(a,i)=>{
const transformString= a.getAttribute('transform');
//grab the X value with regex and change as desired
const valX = parseFloat(transformString.match(/(\d+\.\d+)(?=\,)|(\d+)(?=\,)/gm))+10;
//replace existing X with new X
a.setAttribute('transform',`${transformString.replace(/(\d+\.\d+)(?=\,)|(\d+)(?=\,)/gm,valX)}`)});
d3
等效值
d3.selectAll('circle')
.attr('transform', function (d,i) {
const transformString= this.getAttribute('transform');
const valX = parseFloat(transformString.match(/(\d+\.\d+)(?=\,)|(\d+)(?=\,)/gm))+10;
return `${transformString.replace(/(\d+\.\d+)(?=\,)|(\d+)(?=\,)/gm,valX)}`
});
1条答案
按热度按时间o75abkj41#