David Hörpel: Korrektur bei Script

Hallo!

Kann mir einer sagen, warum dieses Script den Anker nicht findet?
<html><head><title>Test</title>
</head>
<script type="text/javascript">
<!--
wert1 = "hallo";
wert2 = "hallo1";

function test()
{
if(document.anchors[wert1])
{location.href= "#"+wert1}
else if(document.anchors[wert2])
{location.href= "#"+wert2 }
else {
alert("Not found!")
}
}
//-->
</script>
<body onload="test()">
<a name="hallo" href="#">ddd</a>
</body>
</html>

Das Script steht jetzt hier schon mehrfach im Forum, aber leider ist die richtige Lösung bis jetzt immer noch ausgeblieben. Deshalb wäre ich euch für eure richtige Hilfe dankbar!

Gruß David!

  1. Hi,

    Wieviele Threads willst Du zu diesem Thema eigentlich noch starten?

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Hi,

      Wieviele Threads willst Du zu diesem Thema eigentlich noch starten?

      Keine mehr, wenn man mir keine falschen Tipps mehr gibt!

      Wie komme ich jetzt zu einer Lösung???

      cu,
      Andreas

      1. Hallo,

        Keine mehr, wenn man mir keine falschen Tipps mehr gibt!

        Wie komme ich jetzt zu einer Lösung???

        Selbst ist der Mann.
        Mit freundlichen Grüßen,
        Andreas Waidelich

        --
        signatures eat bandwidth
  2. Hallo,

    Kann mir einer sagen, warum dieses Script den Anker nicht findet?

    [...]

    Doch, das funktioniert unter Mozilla und Opera, aber nicht im IE. Probiere es alternativ so:

    if(document.anchors[0].name==wert1)
    {location.href= "#"+wert1}
    else if(document.anchors[0].name==wert2)
    {location.href= "#"+wert2 }
    else {
    alert("Not found!")
    }

    Wenn beide Anker nicht gleichzeitig vorkommen und der Index des gesuchten Ankers nicht bekannt ist, dann um die Abfrage noch ein Testschleife ueber document.anchors[0] bis document.anchors[document.anchors.length-1] legen.

    MfG, Thomas

  3. Hi,

    Thomas meinte es funzt im Mozilla und Opera.

    Ich vermute der kleine Fehler liegt hier:

    <a name="hallo" href="#">ddd</a>

    document.anchors[] spricht alle <a name=""> (Anker) an, während document.links[] alle <a href=""> (Link) anspricht.

    Ein <a name="hallo" href="#"> gibt es nicht, soweit ich weiß!

    Hieraus:
    location.href= "#"+wert1

    geht ja eigentlich hervor, dass du einen Anker meinst!

    Wenn es sich um einen Anker handeln soll, mach das href weg! Und das "ddd". Ich glaube laut W3C darf ein Anker keinen Text o.ä. enthalten.

    <a name="hallo" href="#"> kann man ja interpretieren wie man will. Der eine als Anker, der andere als Link.

    Christian

    1. Hi,

      Wenn es sich um einen Anker handeln soll, mach das href weg! Und das "ddd". Ich glaube laut W3C darf ein Anker keinen Text o.ä. enthalten.

      Warum hast Du nicht nachgeschlagen?

      Natürlich darf ein a-Element sowohl ein name- alos auch ein href-Attribut gleichzeitig besitzen (siehe z.B. die Beispiele zu a - link siehe unten).
      Genauso wie es nur ein href-Attribut besitzen darf. Oder nur ein name-Attribut.
      Oder sogar keines von beiden (dieser Fall wird explizit erwähnt im Standard).

      Nachzulesen unter http://www.w3.org/TR/html401/struct/links.html#edef-A

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/