David Hörpel: Warum werden if-Anweisungen nicht vollständig durchlaufen?

Hallo!

Kann mir einer die Frage beantworten, warum in dem folgenden Script nur die erste if-Anweisung beachtet wird?

<html><head><title>Test</title>
<script type="text/javascript">
<!--
wert1 = "hallo";
wert2 = "hallo1";

function test()
{
if( document.getElementsByName(wert2).checked = true)
{location.href= "#"+wert2}
else if (document.getElementsByName(wert1).checked = true)
{location.href= "#"+wert1 }
else {
alert("There was no found!")
}
}
//-->
</script>
</head><body onload="test()">
<a name="hallo" href="#">ddd</a>
</body></html>

Gruß David!

  1. if( document.getElementsByName(wert2).checked = true)

    x = y ist eine zuweisung, die idR immer den wert wahr ergibt, somit ist die if-bedingung erfüllt.

    x == y ist ein wirklicher vergleich.

    1. Moin,

      if( document.getElementsByName(wert2).checked = true)

      x = y ist eine zuweisung, die idR immer den wert wahr ergibt, somit ist die if-bedingung erfüllt.

      Genauer gesagt kommt bei einer Zuweisung der zugewiesene Wert als Wert heraus, in diesem Fall also explizit "true".

      --
      Henryk Plötz
      Grüße aus Berlin
      ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
      ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
      1. Genauer gesagt kommt bei einer Zuweisung der zugewiesene Wert als Wert heraus, in diesem Fall also explizit "true".

        ups, ja, da hast du natürlich recht.

  2. Hi,

    function test()

    ungünstiger Funktionsname - test() gibt es schon als vordefinierten Namen

    {
    if( document.getElementsByName(wert2).checked = true)

    Die Zuweisung des Wertes hat den Wahrheitswert true.
    Damit ist die Bedingung immer erfüllt.

    {location.href= "#"+wert2}
    else if (document.getElementsByName(wert1).checked = true)

    also wird dieser else-Zweig immer ignoriert.

    {location.href= "#"+wert1 }
    else {
    alert("There was no found!")

    Welche Sprache ist das eigentlich? Englisch ist es nicht, im Englischen gibt es meines (und http://dict.leo.org/) Wissens kein Substantiv "found".

    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!

      Also, ich habe das Script nochmal korrigiert, aber irgendwie funktionniert es immer noch nicht so ganz nach meinen Vorstellungen, das findet nämlcih nie einen Anker! Knnt ihr mir helfen? Danke!

      <html><head><title>Test</title>
      <script type="text/javascript">
      <!--
      wert1 = "hallo";
      wert2 = "hallo1";

      function test()
      {
      if( wert1 == document.getElementsByName(wert1))
      {location.href= "#"+wert1}
      else if ( wert2 == document.getElementsByName(wert2))
      {location.href= "#"+wert2 }
      else {
      alert("There isn't a find!")
      }
      }
      //-->
      </script>
      </head><body onload="test()">
      <a name="hallo" href="#">ddd</a>
      </body></html>

      Gruß David!

      1. Moin!

        alert("There isn't a find!")

        *Gröhl* - der Thread wird ja immer besser. :)))

        - Sven Rautenberg

        --
        Nein, bei Threads, deren Themengebiet auf (MENSCHELEI) gesetzt ist, will ich nichts konstruktives beitragen. :)
      2. Hi,

        Hi!

        Also, ich habe das Script nochmal korrigiert, aber irgendwie funktionniert es immer noch nicht so ganz nach meinen Vorstellungen, das findet nämlcih nie einen Anker! Knnt ihr mir helfen? Danke!

        Du hast den Hinweis von Thomas ignoriert.

        alert("There isn't a find!")

        Grammatikalisch mag das zwar vielleicht richtig sein.
        Aber warum nicht einfach:
        Nothing was found
        Not found
        oder ähnliches

        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/
  3. Hallo,

    if( document.getElementsByName(wert2).checked = true)

    getElementsByName() liefert die Collection (also ein Array) der mit wert2 benannten Elemente zurueck, also fehlt bereits der jeweilige Index (0 bis anzahl-1) und es ist keine Zuweisung sondern ein Vergleich noetig:

    if(document.getElementsByName(wert2)[index].checked == true)

    oder nur:

    if(document.getElementsByName(wert2)[index].checked)

    MfG, Thomas