Gunnar: Problem bei Selectbox per JS löschen

Durch Aufruf der Funktion  UpdateDD()  soll das Dropdownmenü geleert werden, um später neuen Inhalt einzufügen. Leider klappt es nicht und es bleiben immer die ersten beiden Einträge vorhanden (das Einfügen klappt und poste ich deshalb hier nicht).

Setze ich in der for schleife statt i < document.form1.karten.length eine hohe zahl ein, zB i < 1000, dann klappt alles. Aber das kann's ja nicht sein ...

Ich glaub, ich hab ein Brett vorm Kopp ... vielleicht kann mich ja mal wer erleuchten, wo mein Fehler liegt? Danke. :)

[..........]

function UpdateDD()
{
 for (var i = 0; i < document.form1.karten.length; i++)
 {
  document.form1.ddmenu.options[document.form1.ddmenu.length-1] = null;
 }
}

[..........]

<form name="form1">
<select name="ddmenu">
<option value="eins" selected>Eins</option>
<option value="zwei">Zwei</option>
<option value="drei">Drei</option>
<option value="vier">Vier</option>
<option value="fuenf">Fünf</option>
<option value="sechs">Sechs</option>
</select>
</form>

[..........]

<a href="javascript:UpdateDD();">UpdateDD</a>

  1. <html>
    <head>
    <script>
    function UpdateDD()
    {

    for (var i = document.form1.ddmenu.length; i >=0; i--)
     {

    document.form1.ddmenu.options[i] = null;
     }
    }

    </script>
    </head>
    <body>
    <form name="form1">
    <select name="ddmenu">
    <option value="eins" selected>Eins</option>
    <option value="zwei">Zwei</option>
    <option value="drei">Drei</option>
    <option value="vier">Vier</option>
    <option value="fuenf">Fünf</option>
    <option value="sechs">Sechs</option>
    </select>
    </form>

    [..........]

    <a href="javascript:UpdateDD();">UpdateDD</a>
    </body>
    </html>

    1. for (var i = document.form1.ddmenu.length; i >=0; i--)
      {

      document.form1.ddmenu.options[i] = null;
      }

      Danke, das klappt ... aber ich bin der Meinung, so rum, wie ich das versucht habe, hätte das auch irgendwie klappen müssen. ;)

      Danke! :D

  2. statt document.form1.ddmenu.options[document.form1.ddmenu.length-1]
    benutze document.form1.ddmenu.options[i] oder so, sonst wird immer nur die letzte option gelöscht. und das so lange, bis die schleife vorbei ist, also bei wenigen durchläufen halt nicht oft genug.
    beachte aber, das wenn die zahl der durchläufe größer ist als die anzahl der options, kommt es wahrscheinlhc zum fehler... habs nicht ausprobiert, wäre aber logisch

    warum nachst du schleife überhaupt über die anzahl von document.form1.karten.length? warum nicht von ddmenu?

    rob

    1. warum nachst du schleife überhaupt über die anzahl von
      document.form1.karten.length? warum nicht von ddmenu?

      Fehler beim Copy und paste. :D

      document.form1.ddmenu.options[i]
      hatte ich auch ausprobiert, brachte aber auch keinen Erfolg...