oleeeeee: getElementByTagName

hi, ich glaube bei js grundsätzlich etwas missverstanden. ich versuche alle links in meinem dokument zu ändern. das ganze sieht so aus:

<body>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>

<script type="text/javascript">
var AnzahlDerATags = document.getElementsByTagName('a').length;

for (var i = 0; i < AnzahlDerATags; ++i){
  document.getElementByTagName("a")[i].href = "http://forum.de.selfhtml.org/";
  document.getElementByTagName("a")[i].firstChild.nodeValue = " test erfolgreich";
  }
</script>
</body>

die schleife an sich funktioniert. aber ich vermute das getElementByTagName nichts weiter kann als einen array zurückgeben. wie also kann ich die eigenschaft eines elementes verändern?

  1. Mahlzeit,

    for (var i = 0; i < AnzahlDerATags; ++i){
      document.getElementByTagName("a")[i].href = "http://forum.de.selfhtml.org/";

    1. ist es wenig sinnvoll bei jedem Durchlauf der Schleife erneut nach allen <a>-Tags zu suchen ...

    document.getElementByTagName("a")[i].firstChild.nodeValue = " test erfolgreich";

    ... und das auch noch zweimal hintereinander,

    2. heißt die Methode http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName() und

    3. wieso benutzt Du nicht http://de.selfhtml.org/javascript/objekte/links.htm@title=document.links?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      1. wieso benutzt Du nicht http://de.selfhtml.org/javascript/objekte/links.htm@title=document.links?

      damit kann man laut der Beschreibung nicht das href-attribut ändern. aber das muss ich

      1. Hallo,

        1. wieso benutzt Du nicht http://de.selfhtml.org/javascript/objekte/links.htm@title=document.links?

        damit kann man laut der Beschreibung nicht das href-attribut ändern. aber das muss ich

        Das ist durchaus möglich. Auch wenn das dort nicht explizit genannt wird, unter http://de.selfhtml.org/javascript/objekte/links.htm#location wird indirekt darauf hingewiesen. (Da gibts nur einen Verweis auf location, damit nicht alle Eigenschaften doppelt beschrieben werden.)

        document.links[0] liefert dir exakt dasselbe Objekt wie document.getElementsByTagName("a")[i] (Linkanker mal außen vor). Damit kannst du jeweils dasselbe anstellen. Nämlich der href-Eigenschaft einen Wert zuweisen - darauf bist du ja schon gekommen.

        Mathias

        1. Mahlzeit,

          document.links[0] liefert dir exakt dasselbe Objekt wie document.getElementsByTagName("a")[i] (Linkanker mal außen vor).

          Nur wenn "i" eine Variable mit dem numerischen Inhalt 0 ist ...</haarspalt> ;-)

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      1. heißt die Methode http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName()

      danke, so funktioniert es:

      <body>

      <a href="http://www.yahoo.de"> test</a>
      <a href="http://www.google.de"> test</a>
      <a href="http://www.w3c.org"> test</a>
      <a href="http://www.maps.google.de"> test</a>
      <a href="http://www.russenschlampen.de"> test</a>

      <script type="text/javascript">

      var AnzahlDerATags = document.getElementsByTagName('a').length;

      for (var i = 0; i < AnzahlDerATags; ++i){

      var element = document.getElementsByTagName("a")[i]

      element.firstChild.data = "test erfolgreich";
        element.href = "http://forum.de.selfhtml.org/";
         }
      </script>
      </body>

      1. @@oleeeeee:

        1. heißt die Methode http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName()

        danke, so funktioniert es:

        Warum bedankst du dich für Hinweise, die du doch nicht befolgst?

        var AnzahlDerATags = document.getElementsByTagName('a').length;

        Du meinst nicht Tags, sondern Elemente.

        for (var i = 0; i < AnzahlDerATags; ++i){

        var element = document.getElementsByTagName("a")[i]

        Es ist Unsinn, in jedem Schleifendurchlauf erneut 'document.getElementsByTagName("a")' aufzurufen, also den gesamten Elementbaum durchzugehen.

        Einmal reicht:

        var links = document.getElementsByTagName("a"); // oder eben über document.links  
          
        for (var i = 0; i < links.length; ++i)  
        {  
          var element = link[i]; // wozu gentlich?
        

        element.firstChild.data = "test erfolgreich";
          element.href = "http://forum.de.selfhtml.org/";

        // warum nicht gleich  
          link[i].firstChild.data = "test erfolgreich";  
          link[i].href = "http://example.net/"; // [[link:http://tools.ietf.org/html/rfc2606.txt@title=RFC2606]]  
        }
        

        Live long and prosper,
        Gunnar

        --
        “New Jersey Hall of Fame? […] But then I ran through the list of names: Albert Einstein, Bruce Springsteen... my mother's going to like that. […] it's the only time she's going to hear those two names mentioned in the same sentence, so I'm going to enjoy it.” (Bruce Springsteen when inducted into the New Jersey Hall of Fame, 2008-05-04)
        1. Mahlzeit,

          for (var i = 0; i < links.length; ++i)

          {
            var element = link[i]; // wozu gentlich?

          // warum nicht gleich
            link[i].firstChild.data = "test erfolgreich";
            link[i].href = "http://example.net/"; // [[link:http://tools.ietf.org/html/rfc2606.txt@title=RFC2606]]
          }

            
          Vielleicht weil  
            
          ~~~javascript
            
            links[i].firstChild.data = "test erfolgreich";  
            links[i].href = "http://example.net/";
          

          besser wäre?</haarspalt> ;-)

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|