Berthold: getElementById() -> getElementsById()

Hallo,

ich habe eine XML- Datei (ganz genau geschrieben eine svg- Datei) in welcher mehrere Elemente mit der gleichen id vorkommen können, wie im unteren Fall z.B.: id="Element1".
Wenn ich jetzt Elemente auslese mit

  
 var componentElement = svggrafik.getElementById('Element1'));  

dann bekomme ich das erste Element, gibt es eine Möglichkeit, dass ich beide Elemente mit der id Element1 bekomme?

lg

  
        <rect  
            transform="matrix(0.8811881,0.0,0.0,1.56,62.61389,-120.560005)"  
            id="Element1"  
            x="474.0"  
            y="176.0"  
            width="100"  
            height="50"  
            fill="#bbbbbb"  
            stroke="black"  
            stroke-width="1">  
        </rect>  
        <rect  
            transform="matrix(0.8811881,0.0,0.0,1.56,62.61389,-120.560005)"  
            id="Element1"  
            x="474.0"  
            y="176.0"  
            width="100"  
            height="50"  
            fill="#bbbbbb"  
            stroke="black"  
            stroke-width="1">  
        </rect>  
...  

  1. Hallo,

    ids sind ids - eindeutige identifikatoren.

    du kannst mit getElementsByTagName("rect") eine Objektliste aller rect-Elemente erhalten und dann testen

    rects  = getElementsByTagName("rect");
    for (var i = 0; i < rects.length; i++) {
     if(rects[i].id == "Element1") {
       alert ("hallo" + i );
     }
    }

    ungetestet.

    Gruß

    jobo

  2. hi,

    dann bekomme ich das erste Element, gibt es eine Möglichkeit, dass ich beide Elemente mit der id Element1 bekomme?

    Id ist eindeutig, scheidet also aus. Was geht: das name-Attribut, das kann nämlich für mehrere Elemente gleich sein. Dafür gibts

    document.getElementsByName('namename')

    Damit kriegst Du ein Array.

    Hotti

    1. Id ist eindeutig, scheidet also aus. Was geht: das name-Attribut, das kann nämlich für mehrere Elemente gleich sein.

      Das funktioniert aber nur, wenn das Element ein name Attribut hat, was nur in den wenigsten Fällen der Fall ist.

      Struppi.

      1. Id ist eindeutig, scheidet also aus. Was geht: das name-Attribut, das kann nämlich für mehrere Elemente gleich sein.

        Das funktioniert aber nur, wenn das Element ein name Attribut hat

        Genau.

        was nur in den wenigsten Fällen der Fall ist.

        Vermutlich muss dann erst so ein Attribut vergeben werden.

        Hotti

        --
        1. was nur in den wenigsten Fällen der Fall ist.

          Vermutlich muss dann erst so ein Attribut vergeben werden.

          Nein, das reicht nicht. Das ist übrigens einer der wenigen Fällen, wo der IE sich mehr an die Standards hält als Firefox.

          Struppi.

          1. Das ist übrigens einer der wenigen Fällen, wo der IE sich mehr an die Standards hält als Firefox.

            Stimmt. Hab neulich auch son Fall gehabt, ist ganz schön gemein sowas ;-)

            Hotti

            --
            document.getElementById('foo').type = 'bar'; // Wack!!!
    2. Hi,

      Id ist eindeutig, scheidet also aus.

      In XML nur dann, wenn es in der DTD als Attribut mit dieser Sonderbedeutung definiert wurde.
      Sonst ist es ein Attribut, wie jedes andere auch.

      MfG ChrisB

      --
      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
      1. Hallo Chris,

        Id ist eindeutig, scheidet also aus.

        In XML nur dann, wenn es in der DTD als Attribut mit dieser Sonderbedeutung definiert wurde.
        Sonst ist es ein Attribut, wie jedes andere auch.

        Da es um SVG geht, ist die Eindeutigkeit von IDs gegeben. Ggf. helfen dem OP Klassendefinitionen weiter, die sich mit dem guten alten Hausmittel "getElementsByClassName()" abfragen lassen (SVG-Beispiel).

        Grüße,
        Thomas