将CreateElementNS放入函数(SVG组、形状等)中

Putting CreateElementNS in a function (SVG Groups, shapes etc)

本文关键字:SVG CreateElementNS 函数      更新时间:2023-09-26

我正试图将此代码转到此处:

var group = function(n){
	n = document.createElementNS(svg, "g" );
}

我做得对吗?我也尝试过"Return n=doc…"但这似乎也不起作用。

现在我只有这样的台词;

e.g1 = document.createElementNS(svg, "g" );
	t2 = "translate("+e.x+" "+e.y+"), rotate("+e.z+" "+0+" "+0+")";
	e.g1.setAttributeNS(null, "transform", t2);
	e.g1.setAttributeNS(null,"fill", "url(#gradient)"); 
	e.g1.setAttributeNS(null,"stroke", "none");
	e.g1.setAttributeNS(null,"stroke-width", e.a*0.03);
	document.getElementById("mySVG").appendChild(e.g1);

我希望它看起来更像这个。。

    group(e.g1);
	t2 = "translate("+e.x+" "+e.y+"), rotate("+e.z+" "+0+" "+0+")";
	transform(e.g1, t2);
	fill(e.g1, url(#gradient));
	stroke(e.g1, #000);
	strokewidth(e.g1, (e.a*0.03));
    append(e.g1);

谢谢,我需要更短的代码!

不,这行不通。当你这样做:

var group = function(n){
    n = document.createElementNS(svg, "g" );
}

您只是在修改传入的n的值。这些更改纯粹是函数的本地更改,不会返回给调用方。

你需要做:

var group = function() {
    return document.createElementNS(svg, "g" );
}
e.g1 = group();

或者,我想你可以这样做:

var group = function(obj, property){
    obj[property] = document.createElementNS(svg, "g" );
}
group(e, 'g1');

但我不知道你为什么要这样做:)