Dash: for Schleife

Hallo, hab fogendes Problem:

Script sollte die fünf auswahlfelder mit den werten 1-5 füllen und bei der ersten die 1 aktiv wählen, bei der zweiten die 2 usw.

Die auswahlfelder werden jedoch mit 1,1,2,3,4 vorselektiert.

Source code:

<html>
<head>
 <title>Untitled</title>
</head>

<body>
  <select name="columnPos" size="1" onchange=""; onFocus=""></select>
  <select name="columnPos" size="1" onchange=""; onFocus=""></select>
  <select name="columnPos" size="1" onchange=""; onFocus=""></select>
  <select name="columnPos" size="1" onchange=""; onFocus=""></select>
  <select name="columnPos" size="1" onchange=""; onFocus=""></select>

<script language="JavaScript">
    <!--
      for(var i = 1; i < 6; i++)
      {
     //alert("");
   for(var j = 1; j < 6; j++)
          {

if(i==j){
         NewOption = new Option(j,j,false,true);
    }else{
      NewOption = new Option(j,j,false,false);
       }
          document.getElementsByName('columnPos')[i-1].options[document.getElementsByName('columnPos')[i-1].length] = NewOption;
        }
      }
    //-->
</script>

</body>
</html>

P.S. Im Netscape funktionierts, im IE 5 nicht. Komisch: mit der alert("") anwesiung funktionierts auch im IE

  1. <html>
    <head>
     <title>Untitled</title>
    </head>

    <body>
      <select name="columnPos" size="1" onchange=""; onFocus=""></select>
      <select name="columnPos" size="1" onchange=""; onFocus=""></select>
      <select name="columnPos" size="1" onchange=""; onFocus=""></select>
      <select name="columnPos" size="1" onchange=""; onFocus=""></select>
      <select name="columnPos" size="1" onchange=""; onFocus=""></select>

    Das muss innerhalb von <form> ... </form>
    gesetzt werden, denn erst dann kannst du darauf zu greifen (deshalb funktioniert es erst nach dem alert() ).

    <script language="JavaScript">

    Es lautet:
    <script type="text/javascript">

    <!--
          for(var i = 1; i < 6; i++)

    Du willst alle 'columnPos' Felder des Formulars durchgehen?

    Das ist ein Array des Formulars.
    alert(document.forms[0].columnPos.length) sagt dir wieviele Elemente es hat. Dann brauchst du auch keine Schleife mit festen Werten, sondern kannst Variabel arbeiten.

    for(var i = 0; i < document.forms[0].columnPos; i++)

    {
         //alert("");
       for(var j = 1; j < 6; j++)
              {

    if(i==j){
             NewOption = new Option(j,j,false,true);
        }else{
          NewOption = new Option(j,j,false,false);

    Es reicht:
    var newOption = new Option, j, j, false, (i==j));

    }
              document.getElementsByName('columnPos')[i-1].options[document.getElementsByName('columnPos')[i-1].length] = NewOption;

    Formularfelder kannst du einfacher direkt ansprechen über document.forms[..]

    document.forms[0].columnPos[i].options[j - 1] = newOption;

    Struppi.

    1. Vielen Dank

      Cu Dash

    2. Hallo Struppi

      Habs ausprobiert, leider immer noch das gleiche Resultat. 1,1,2,3,4 anstatt 1,2,3,4,5

      code:
      <html>
      <head>
       <title>Untitled</title>
      </head>

      <body>
         <form name='colPos'>
                  <select name="columnPos" size="1" onchange=""; onFocus="">

      </select>
         <select name="columnPos" size="1" onchange=""; onFocus="">

      </select>
         <select name="columnPos" size="1" onchange=""; onFocus="">

      </select>
         <select name="columnPos" size="1" onchange=""; onFocus="">

      </select>
         <select name="columnPos" size="1" onchange=""; onFocus="">

      </select>
       </form>

      <script type="text/javascript">
          <!--

      for(var i = 0; i < document.colPos.columnPos.length; i++)
       {
            //alert("");
        for(var j = 0; j < 5; j++)
          {
             newOption = new Option(j+1,j+1,false,i==j);
          document.colPos.columnPos[i].options[j] = newOption;
              }
            }
          //-->
          </script>

      </body>
      </html>

      Hast du (oder jemand anderes) noch eine Idee?

      Cu Dash

      1. Hallo Struppi

        Habs ausprobiert, leider immer noch das gleiche Resultat. 1,1,2,3,4 anstatt 1,2,3,4,5

        code:

        seltsam, ich hab den code so kopiert wie er da unten steht und bei mir kommen 5 select boxen mit den Werten 1-5. Das ist doch was du willst, oder?

        Struppi.

        1. Ja, alle haben die Auswahlmöglichkeiten 1,2,3,4,5. Beim laden soll beim ersten Auswahlfeld die 1, beim zweiten die 2, usw. vorselektiert sein.

          Sehrwahrscheinlich hat da der IE ein Problem, denn mit dem Nettscape geht es. (Auch ohne das alert())

          Cu Dash

          1. Hallo,

            Ja, alle haben die Auswahlmöglichkeiten 1,2,3,4,5. Beim laden soll beim ersten Auswahlfeld die 1, beim zweiten die 2, usw. vorselektiert sein.
            Sehrwahrscheinlich hat da der IE ein Problem, denn mit dem Nettscape geht es. (Auch ohne das alert())

            <html>
            <head>
            <title>Untitled</title>
            <script type="text/javascript">
            <!--
             function filloptions() {
              for(var i = 0; i < document.colPos.columnPos.length; i++) {
               for(var j = 0; j < 5; j++) {
                newOption = new Option(j+1,j+1,false,i==j);
                document.colPos.columnPos[i].options[j] = newOption;
               }
              }
             }
            //-->
            </script>
            </head>
            <body onload="filloptions()">
             <form name="colPos">
              <select name="columnPos" size="1" onchange="" onFocus=""></select>
              <select name="columnPos" size="1" onchange="" onFocus=""></select>
              <select name="columnPos" size="1" onchange="" onFocus=""></select>
              <select name="columnPos" size="1" onchange="" onFocus=""></select>
              <select name="columnPos" size="1" onchange="" onFocus=""></select>
             </form>
            </body>
            </html>

            viele Grüße

            Axel

            1. Danke, das geht...

              Nur, kannst du mir sagen wieso es nur per Funktionsaufruf funktioniert?

              Cu Dash

              1. Hallo,

                Danke, das geht...

                Nur, kannst du mir sagen wieso es nur per Funktionsaufruf funktioniert?

                MSIE "verhaspelt" sich beim Seitenaufbau. Das Ereignis body.onload tritt offensichtlich spät genug ein. Mit dem alert() hast Du auch nichts anderes gemacht, als etwas Zeit zu schinden.

                viele Grüße

                Axel

                1. Hallo,

                  Danke, das geht...

                  Nur, kannst du mir sagen wieso es nur per Funktionsaufruf funktioniert?
                  MSIE "verhaspelt" sich beim Seitenaufbau. Das Ereignis body.onload tritt offensichtlich spät genug ein. Mit dem alert() hast Du auch nichts anderes gemacht, als etwas Zeit zu schinden.

                  und seltsamerweise geht's bei mir im IE 4.0 auch ohne. aber mit dem onload ist es am sinnvollsten.

                  Struppi.