Stephan: Auswahl eines Listeneintrag bei Pull-Downs!

Hallo,

ich habe folgendes Problem. Ich möchte die einzelnen Einträge eines Pulldown-Menüs überprüfen lassen. Ich weise einer Variablen einen Wert zu. Stimt dieser mit dem Value des Listeineintrags überein, dann soll dieser ausgeählt erscheinen.

Bitte helft mir, habe bisher nur wenig Ahnung von JS!
Anbei mal das, was ich zusammengeschustert habe. Es soll während des Ladens überprüft werden, ob ein Listeneintrag mit dem Wert 125 existiert. Wenn ja, dann soll dieser ausgewählt werden.

Vielen Dank im voraus an alle Helfer

Gruss,
Stephan

<html>
<head>
<title>Test</title>
<script language="JavaScript">
<!--
function CheckAuswahl()
{
var x= "125"
}

{
 for(i=0;i<document.Testform.Auswahl.length;++i)
 if (document.Testform.Auswahl.options[i].value == x);
 document.Testform.Auswahl.options[i].selected == true
}

//-->
</script>

</head>
<body>
<form name="Testform" action="">
<select name="Auswahl" size="5" onLoad="CheckAuswahl()">
<option value="10">10</option>
<option value="50">50</option>
<option value="60">60</option>
<option value="125">125</option>
<option value="150">150</option>
</select>
</form>
</body>
</html>

  1. Hallo,

    das script ist schon fast richtig.

    function CheckAuswahl()
    {
    var x= "125"
    }

    ^^^
    Hier endet die Funktion.

    {

    ^^^
    Hier beginnt ein neuer Anweisungsblock.

    [...]
    for(i=0;i<document.Testform.Auswahl.length;++i)

    ^^^
    "i++" ist AFAIK gegenüber "++i" vorzuziehen.

    if (document.Testform.Auswahl.options[i].value == x);

    ^^^
    Der Strichpunkt muss an das ende der darunterliegenden Zeile.

    [...]

    <body>
    <form name="Testform" action="">
    <select name="Auswahl" size="5" onLoad="CheckAuswahl()">

    ^^^^^^^^^^^^^^^^^^^^^^^
                                das muss in den einleitenden body-Tag

    Lass die beiden markierten geschwiffenen Klammern ("}" und "{") weg und führe die anderen Veränderungen wie oben beschrieben aus, dann müsste es funktionieren.

    Tipp: sobald du einen Eintrag gefunden hast, kannst du aus der Schleife Ausbrechen:

    for(i=0;i<document.Testform.Auswahl.length;i++)
      if (document.Testform.Auswahl.options[i].value == x) {
        document.Testform.Auswahl.options[i].selected == true;
        break;
      }

    viel Erfolg,

    Robert

    http://www.designauswahl.here.de
    mit kostenlosem Webseiten-Generator ROBE.dit
    [more than a HTMLE.dit]

    1. Tipp: sobald du einen Eintrag gefunden hast, kannst du aus der Schleife Ausbrechen:

      for(i=0;i<document.Testform.Auswahl.length;i++)
        if (document.Testform.Auswahl.options[i].value == x) {
          document.Testform.Auswahl.options[i].selected == true;
          break;
        }

      Erstmal vielen Dank für die schnelle Antwort. Ich bekomme jetzt zwar keine Fehlermeldung mehr, aber der Listeneintrag erscheint noch immer nicht markiert. Er soll nach dem Laden ausgewählt erscheinen, als ob ich ihn mit der Maus angeklickt hätte.

      Hier meine abgeänderte Version:

      <html>
      <head>
      <title>Test</title>
      <script language="JavaScript">
      <!--
      function CheckAuswahl()
      {
      var x= "125"

      for(i=0;i<document.Testform.Auswahl.length;++i)
       if (document.Testform.Auswahl.options[i].value == x){
       document.Testform.Auswahl.options[i].selected == true;
       break;
      }
      }
      //-->
      </script>

      </head>
      <body onLoad="CheckAuswahl()">
      <form name="Testform" action="">
      <select name="Auswahl" size="5">
      <option value="10">10</option>
      <option value="50">50</option>
      <option value="60">60</option>
      <option value="125">125</option>
      <option value="150">150</option>
      </select>
      </form>
      </body>
      </html>

      Was mache ich noch falsch????

      1. for(i=0;i<document.Testform.Auswahl.length;++i)

        Ich habe natürlich auch noch diese Zeile in i++ abgeändert.

        Aber das hat auch nicht funktioniert.

      2. Hallo,

        Erstmal vielen Dank für die schnelle Antwort. Ich bekomme jetzt zwar keine Fehlermeldung mehr, aber der Listeneintrag erscheint noch immer nicht markiert. Er soll nach dem Laden ausgewählt erscheinen, als ob ich ihn mit der Maus angeklickt hätte.

        document.Testform.Auswahl.options[i].selected == true;

        ^^^^
        Hab ich noch vergessen: Hier kommt ein einfaches Gleichheitszeichen hin ("="). In JavaScript unterscheidet sich der Zuweisungsoperator ("=") von dem Vergleichsoperator ("=="):

        Der Zuweisungsoperator weist als Nebenwirkung der linken Seite den Wert der rechten Seite zu und gibt als Rückgabewert den anschließenden Wert beider Seiten zurück. Der Vergleichsoperator vergleicht die linke und die rechte Seite und gibt true zurück, falls beide den gleichen Wert haben, andernfalls false. Der Vergleichsoperator hat keinen Nebenwirkungen.

        Robert

        http://www.designauswahl.here.de
        mit kostenlosem Webseiten-Generator ROBE.dit
        [more than a HTMLE.dit]

        1. Hab ich noch vergessen: Hier kommt ein einfaches Gleichheitszeichen hin ("="). In JavaScript unterscheidet sich der Zuweisungsoperator ("=") von dem Vergleichsoperator ("=="):

          Der Zuweisungsoperator weist als Nebenwirkung der linken Seite den Wert der rechten Seite zu und gibt als Rückgabewert den anschließenden Wert beider Seiten zurück. Der Vergleichsoperator vergleicht die linke und die rechte Seite und gibt true zurück, falls beide den gleichen Wert haben, andernfalls false. Der Vergleichsoperator hat keinen Nebenwirkungen.

          Vielen Dank Robert, klappt jetzt prima. Genau so hatte ich mir das nämlich vorgestellt!!!

          Danke!!!!!!!