mcclane: svg mit js erstellen

hallo leute.

ich möchte in einer schleife mittels javascript mehrere svg elemente erzeugen.
so sieht der teil meines code aus:

#############################################

var shape = svgDocument.createElementNS(svgns, "path");

for (var i=0; i<5; i++)
{
  shape.setAttributeNS(null, "id", "strich"+nr);
  shape.setAttributeNS(null, "d", "M" + xKoord + ",240 l15,0");
  shape.setAttributeNS(null, "style", "stroke:black; stroke-width:3;");

svgDocument.documentElement.appendChild(shape);

xKoord = xKoord + 30;
  nr++;
}

###############################################

das problem ist, dass scheinbar jedes mal ein neues element erzeugt und das alte überschrieben wird. deswegen habe ich extra die id strich+nr hinzugefügt, aber hilft nichts.
d.h. die for wird zwar 5mal durchlaufen aber es entstehen keine 5 striche, sondern nur einer.

wo ist mein denkfehler?

grüße
mcclane

  1. Hallo mcclane.

    var shape = svgDocument.createElementNS(svgns, "path");

    for (var i=0; i<5; i++)
    {
      shape.setAttributeNS(null, "id", "strich"+nr);
      shape.setAttributeNS(null, "d", "M" + xKoord + ",240 l15,0");
      shape.setAttributeNS(null, "style", "stroke:black; stroke-width:3;");

    svgDocument.documentElement.appendChild(shape);

    xKoord = xKoord + 30;
      nr++;
    }

    
    >   
    > ###############################################  
    >   
    > das problem ist, dass scheinbar jedes mal ein neues element erzeugt und das alte überschrieben wird. deswegen habe ich extra die id strich+nr hinzugefügt, aber hilft nichts.  
    > d.h. die for wird zwar 5mal durchlaufen aber es entstehen keine 5 striche, sondern nur einer.  
    >   
    > wo ist mein denkfehler?  
      
    In deinem Verständnis der Funktionsweise von [appendChild](http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-184E7107):  
      
    
    > Adds the node newChild to the end of the list of children of this node. If the newChild is already in the tree, it is first removed.  
      
    Du musst also wirklich händisch per createElementNS immer wieder ein neues Objekt erzeugen.  
      
      
    Einen schönen Sonntag noch.  
      
    Gruß, Mathias  
    
    -- 
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)  
      
    debian/rules