Bine: Links Target beeinflussen .links[0].target

Hallo
Suche schon den ganzen Tag ohne eine Antwort zu finden.
Kann man die Targetangabe auch unterhalb der document
Struktur finden und beeinflussen.

Was ich damit meine ist:

Beispiel:
------------------------
<html><head><title>Test</title>
</head><body>
<a href="http://xyz.de" target="was_auch_immer">gehe zu</a>

<script type="text/javascript">
alert(document.links[0].target)
</script>
</body></html>

------------------

So dass klappt: Meldung der targetangabe erscheint, aber..
Wenn ich nur einen bestimmten Bereich aus der seite haben will
dann gehts nicht, Warum ?

Beispiel:
------------------------
<html><head><title>Test</title>
</head><body>
<a href="http://xyz.de" target="a">gehe zu</a>
<a href="http://xyz.de" target="b">gehe zu</a>

<div id="bereich">
<a href="http://xyz.de" target="was_auch_immer">gehe zu</a>
</div>

<script type="text/javascript">
alert(document.bereich.links[0].target)
</script>
</body></html>

-----------------------------------

Der Sinn des Ganzen:
Eine automatisch generierte Seite mit vielen
Links. Alle Linkgruppen sind in verschieden divs
untergebracht, so dass ich eigentlich dachte ich könnte
einigen ausgewählten divs spezielle JS.Anweisungen geben.

Das klappt auch aber eben nicht mit links.
Hier möchte ich zum Beispiel in einem DIV alle Links die
das Attribut Target='_blank' haben, ein neues Target zuweisen.

Fazit:
Mit => document.links[i].target = "rechtes_fenster";
klappt es, bedeutet aber ALLE Links auf der Seite werden geändert
bzw einbezogen, leider nicht nur der Bereich den es betrifft.

Gibt es eine Lösung ?

Bine

  1. hi,

    <div id="bereich">
    <a href="http://xyz.de" target="was_auch_immer">gehe zu</a>
    </div>

    <script type="text/javascript">
    alert(document.bereich.links[0].target)

    Wie kommst du darauf, dass document.bereich existieren würde?

    Gibt es eine Lösung ?

    getElementById(), ggf. gefolgt von getElementsByTagName().

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo Wahsaga

      <div id="bereich">
      <a href="http://xyz.de" target="was_auch_immer">gehe zu</a>
      </div>

      getElementById(), ggf. gefolgt von getElementsByTagName().

      na ja , probiert habe ich es aber klappt nicht.

      alert(getElementById('bereich').links[0].target);

      Bine

      1. Hallo Bine,

        getElementById(), ggf. gefolgt von getElementsByTagName().
        na ja , probiert habe ich es aber klappt nicht.

        weil du dem Wegweiser nicht bis zum Ende gefolgt bist.

        alert(getElementById('bereich').links[0].target);

        Das war nur der erste Teil - jetzt käme noch der Auftritt für getElementsByTagName(), den du leider nicht umgesetzt hast.

        Die Collection links[] ist ein Unter-Objekt von document und enthält generell *alle* Links des Dokuments in der Reihenfolge ihres Auftretens im Quellcode. Ein beliebiges Element innerhalb des Dokuments hat keine links-Eigenschaft mehr. Deswegen ist dieser Ansatz für deine Aufgabenstellung nicht brauchbar.

        Schönen Abend noch,
         Martin

        --
        Computer funktionieren grundsätzlich nicht richtig.
        Wenn doch, hast du etwas falsch gemacht.
        1. Hallo Martin

          Die Collection links[] ist ein Unter-Objekt von document und enthält generell *alle* Links des Dokuments in der Reihenfolge ihres Auftretens im Quellcode. Ein beliebiges Element innerhalb des Dokuments hat keine links-Eigenschaft mehr. Deswegen ist dieser Ansatz für deine Aufgabenstellung nicht brauchbar.

          AHA, das wars was ich den ganzen Tag gesucht habe.
          Also geht's gar nicht wenn ich das richtig verstehe.
          " Entweder alle Links oder keine "

          Schade dachte müsste gehen.

          Danke
          Bine

          1. Hello,

            AHA, das wars was ich den ganzen Tag gesucht habe.
            Also geht's gar nicht wenn ich das richtig verstehe.
            " Entweder alle Links oder keine "
            Schade dachte müsste gehen.

            NEIN, LIES BITTE! Dir wurde empfohlen getElementById und danach getElementsByTagName abzufragen. Schau dir bitte dort das Beispiel an!
            Erst gehst du in den Bereich, dann liest du dort alle Links aus, aber eben NICHT über .links (weil es das nur auf document-Ebene gibt), sondern indem du nach dem <a>-Tag suchst.

            MfG
            Rouven

            --
            -------------------
            Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends: commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. -- Larry OBrien and Bruce Eckel in Thinking in C#
            1. Hallo Rouven

              Erst gehst du in den Bereich, dann liest du dort alle Links aus, aber eben NICHT über .links (weil es das nur auf document-Ebene gibt), sondern indem du nach dem <a>-Tag suchst.

              So mache ich das auch normalerweise, wie in deinem Link.
              Aber in diesem Fall komme ich nicht weiter, weil ich
              warscheinlich ein metergrosses Brett im Moment
              vorm Kopf habe.

              Folgendes habe ich probiert:

              ---------------------------------

              <script type="text/javascript">
              var bereich = document.getElementById("uno");
              var lnk = bereich.getElementsByTagName("a");

              </script>

              => Hier bekomme ich eine Targetangabe, aber nur
              weil ich direkt auf die ID verweisen kann.
              <p><a href="#" onclick="alert(link1.target);return false;">klicktest</a></p>

              => Ohne den Link zu kennen komm ich nicht hin.
              <p><a href="#" onclick="alert(lnk[0].target);return false;">klicktest_2</a></p>

              <p id="uno" style="background-color:#f6f6f6;height:50px;font-size:20px;">
              <a id='link1' href="http://google.de" target="sysy">GOOGLEEEEEEEE</a><br>
              <a id="link2" href="http://yahoo.de" target="sysy">Yahooooooooo</a>
              </p>

              ------------------------------------
              Was mache ich falsch ?

              Bine

              1. Hello,

                <p id="uno" style="background-color:#f6f6f6;height:50px;font-size:20px;">
                <a id='link1' href="http://google.de" target="sysy">GOOGLEEEEEEEE</a><br>
                <a id="link2" href="http://yahoo.de" target="sysy">Yahooooooooo</a>
                </p>

                also sehe ich das richtig, dass du hier alles findest? Gut.

                <p><a href="#" onclick="alert(lnk[0].target);return false;">klicktest_2</a></p>

                Nun ja, woran willst du diesen Link identifizieren? Wonach suchst du überhaupt? Gibt es irgendein Eltern-Element mit, das eine ID hat? Wenn es das nicht gibt, dann gibt es natürlich auch keine Möglichkeit die Suche einzuschränken, dann musst du notgedrungen über alle Links im Dokument iterieren, aber was lies dich glauben, dass es eine Möglichkeit gäbe? Du hast gefragt ob man Links in einem Bereich lokalisieren kannst. Das <p> ist nur bedingt ein Bereich. Du kannst natürlich vorher document.getElementsByTagName("p") verwenden, aber du bekommst _auch_ wieder alle benannten (-> "uno") Abschnitte, von daher ist die Ersparnis wahrscheinlich gering.

                Schließlich, wenn du noch einen Weg _hin_ zu diesem <p> wüsstest, also sowas wie "steht direkt vor dem <p id="uno">", dann könnte man dort über DOM hinnavigieren.

                MfG
                Rouven

                --
                -------------------
                Buy when there's blood running in the street and sell when everyone is pounding at your door, clawing to own your equities  --  Wisdom on Wallstreet
                1. Lieber Rouven,

                  also sehe ich das richtig, dass du hier alles findest? Gut.

                  Den Satz verstehe ich nicht.

                  , aber was lies dich glauben, dass es eine Möglichkeit gäbe? »»

                  Gibt es doch keine Möglichkeit ?

                  Ich habe leider nicht viel verstanden von dem was du
                  geschrieben hast,jetzt weiss ich nicht ob es geht und ich nur einen DenkFehler habe oder ob es gar nicht gehen kann.

                  Dank für deine Mühe
                  Bine

                  1. Hi,

                    <p id="abc">
                    ...
                    </p>
                    Geht ohne Probleme (per ID an der <p>-Element ran, von dort per getElementsByTagName alle <a>-Elemente)

                    <p>
                    ...
                    </p>
                    Geht auf Anhieb nicht, weil keine ID da ist um das <p> zu lokalisieren.
                    Du könntest:

                    1. per document.getElementsByTagName("p") alle <p> suchen, hast dann irgendwann auch das gesucht, aber auch viele andere
                    2. per document.getElementsByTagName("a") alle <a> suchen, hast dann auch irgendwann die gesuchten, aber noch mehr Müll als in (1)
                    3. versuchen das <p> zu finden, z.B. über:

                    3a) <p> liegt in einem anderen benannten Abschnitt:
                    <div id="ich_enthalte_das_p">
                      <p>
                      ...
                      </p>
                    </div>

                    3b) <p> liegt in nachbarschafft eines benannten Elementes
                    <p id="abschnitt_vorher">
                    </p>
                    <p>
                    ...
                    </p>
                    -> Suche per document.getElementById("abschnitt_vorher") das vorherige Element,  geh dann per .nextSibling zum gesuchten <p>.

                    MfG
                    Rouven

                    --
                    -------------------
                    There's no such thing as a free lunch  --  Milton Friedman
                    1. Hi Rouven

                      </p>
                      -> Suche per document.getElementById("abschnitt_vorher") das vorherige Element,  geh dann per .nextSibling zum gesuchten <p>.

                      Oweia, du wirst zunehmend kryptischer. Verstehe nur noch Bahnhof.

                      Trotzdem Danke für deine Mühe
                      Bine

                      1. Hi,

                        Oweia, du wirst zunehmend kryptischer. Verstehe nur noch Bahnhof.

                        hmpf? Da stand eigentlich alles drin. Aaaalso, nochmal:
                        <p id="abc">
                           Das hier ist ein Absatz; Er hat eine ID und kann daher leicht gefunden werden. Er enthält aber nicht die gesuchten Links
                        </p>
                        <p>
                           Hier ist der gesuchte Absatz, d.h. er enthält die Links, kann aber nicht per ID o.ä. angesprochen werden.
                           <a href="...">Link 1</a>
                           ...
                        </p>

                        Wir wollen also die Links in dem "nicht identifizierbaren" <p> haben, wissen aber, dass es direkt hinter dem identifizierbaren <p id="abc"> steht.

                        1. besorgen wir uns dieses: nd = document.getElementById("abc") -> jetzt haben wir es
                        2. gehen wir nun zu seinem Geschwisterchen (das ist das gesuchte <p>): nd = nd.nextSibling -> jetzt steht in nd das gesuchte <p>
                        3. schauen wir nun die Links an: linkNodes = nd.getElementsByTagName("a");

                        Aber wie gesagt, das Szenario basiert darauf, dass du zumindest weißt wie du von einem identifizierbaren Element (z.B. mit einer ID) zu dem nicht identifizierbaren Element mit den Links hinkommst. Wenn du darüber überhaupt keine Informationen hast (unbekanntest HTML-Dokument), dann kommst du nicht umher bei deiner Ausgangsvariante zu bleiben und über alle Links drüber zu gehen.

                        MfG
                        Rouven

                        --
                        -------------------
                        He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
                        1. hmpf? Da stand eigentlich alles drin. Aaaalso, nochmal:
                          <p id="abc">
                             Das hier ist ein Absatz; Er hat eine ID und kann daher leicht gefunden werden. Er enthält aber nicht die gesuchten Links
                          </p>

                          Doch Rouven, siehe mein Beispiel die links sind
                          in dem identifizierbaren <p id=...>

                          ------------------------------------
                          <p id="uno" style="background-color:#f6f6f6;height:50px;font-size:20px;">
                          <a id='link1' href="http://google.de" target="_self">GOOGLEEEEEEEE</a><br>
                          <a id="link2" href="http://yahoo.de" target="fenster_1">Yahooooooooo</a>
                          </p>
                          ------------------------------

                          Ich finde auch dahin, nur eben nicht zu den Links und
                          somit erst recht nicht zur Target angabe.

                          Bine

                          1. Hi,

                            <p id="uno" style="background-color:#f6f6f6;height:50px;font-size:20px;">
                            <a id='link1' href="http://google.de" target="_self">GOOGLEEEEEEEE</a><br>
                            <a id="link2" href="http://yahoo.de" target="fenster_1">Yahooooooooo</a>
                            </p>

                            ja, aber das ist doch das "einfache" Szenario, ich dachte soweit wären wir schon.

                            1. p_element = document.getElemementById("uno") -> jetzt haben wir das <p>
                            2. if (p_element) links = p_element.getElementsByTagName("a"); -> jetzt haben wir die <a>-Elemente

                            MfG
                            Rouven

                            --
                            -------------------
                            He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve