Sokrates: Variablenübergabe an ein script

Hallo erstmal,

nach ewiglangem rumprobieren erbitte ich Hilfe.

Folgendes Problem:

ich habe ein kleines feines Script um dropdownmenus auf den Ursprungswert zurückzusetzen. Funktioniert soweit ganz prima. Nun habe ich aber über 30 solcher Menus die ich zurücksetzen möchte ohne den script 30 mal zu duplizieren nur um jeweils nur einen einzigen wert zu verändern.

das Script sieht folgendermaßen aus:

<script type="text/javascript">
function AuswahlReset () {
  for (i = 0; i < document.antrag.vpanerede.length; i++)
    if (document.antrag.vpanrede.options[i].defaultSelected == true)
        document.antrag.vpanrede.options[i].selected = true; }
</script>

das Menus die dabei angesteuert werden sollen:

<select name="vpanrede" size="1" id="vpanrede">
<option value="<?php echo "$vpanrede"; ?>" selected>
<?php if (!isset($vpanrede)) {echo "--";} elseif ($vpanrede == "w") {echo "Frau"; } elseif ($vpanrede == "m") {echo "Herr"; } ?></option>
<option value="w">Frau</option>
<option value="m">Herr</option>
</select>

der aufruf des scriptes erfolgt dann folgendermaßen (für Menu 1):

<input type="button" name="loeschen" value=""
 onClick="AuswahlReset(); ">

um wie oben erwähnt nicht 30 Scripte duplizieren zu müssen würde ich das so ähnl realisieren:

Script (hab auch andere Schreibweisen schon vergebens durchprobiert):

<script type="text/javascript">
function AuswahlReset (feldname) {
  for (i = 0; i < "document.antrag."+ feldname +".length"; i++)
    if ("document.antrag."+ feldname +".options[i].defaultSelected == true)
        "document.antrag."+ feldname +".options[i].selected = true; }
</script>

Anzusprechende menus:

<select name="vpanrede" size="1" id="vpanrede">
<option value="<?php echo "$vpanrede"; ?>" selected>
<?php if (!isset($vpanrede)) {echo "--";} elseif ($vpanrede == "w") {echo "Frau"; } elseif ($vpanrede == "m") {echo "Herr"; } ?></option>
<option value="w">Frau</option>
<option value="m">Herr</option>
</select>

<select name="vpanrede2" size="1" id="vpanrede2">
<option value="<?php echo "$vpanrede2"; ?>" selected>
<?php if (!isset($vpanrede2)) {echo "--";}
elseif ($vpanrede2 == "w") {echo "Frau"; }
elseif ($vpanrede2 == "m") {echo "Herr"; } ?></option>
<option value="w">Frau</option>
<option value="m">Herr</option>
</select>

etc.

Aufruf des Skriptes mit variablenübergabe so wie ich es mir vorstellen würde, daß aber leider nicht funktioniert:

<input type="button" name="loeschen" value=""
 onClick="AuswahlReset('vpanrede'); ">

<input type="button" name="loeschen" value=""
 onClick="AuswahlReset('vpanrede2'); ">

So könnte ich beliebig viele Dropdownmenus mit nur einem Script aus verschiedenen events heraus abrufen. Ich denke das ich die zu übergebene Variable in dem SCript nur anders maskieren muss aber wie?

Vielen Dank im Voraus.

Sokrates

  1. Das ganze noch mal in gekürzter Fassung der übersichtlichkeit zuliebe:

    nach ewiglangem rumprobieren erbitte ich Hilfe.

    Folgendes Problem:

    ich habe ein kleines feines Script um dropdownmenus auf den Ursprungswert zurückzusetzen. Funktioniert soweit ganz prima. Nun habe ich aber über 30 solcher Menus die ich zurücksetzen möchte ohne den script 30 mal zu duplizieren nur um jeweils nur einen einzigen wert zu verändern.

    das Script sieht folgendermaßen aus:

    <script type="text/javascript">
    function AuswahlReset () {
      for (i = 0; i < document.antrag.vpanerede.length; i++)
        if (document.antrag.vpanrede.options[i].defaultSelected == true)
            document.antrag.vpanrede.options[i].selected = true; }
    </script>

    das Menus die dabei angesteuert werden sollen:

    <select name="vpanrede" size="1" id="vpanrede">
    <option value="--"></option>
    <option value="w">Frau</option>
    <option value="m">Herr</option>
    </select>

    der aufruf des scriptes erfolgt dann folgendermaßen (für Menu 1):

    <input type="button" name="loeschen" value="löschen" onClick="AuswahlReset(); ">

    um wie oben erwähnt nicht 30 Scripte duplizieren zu müssen würde ich das so ähnl realisieren:

    Script (hab auch andere Schreibweisen schon vergebens durchprobiert):

    <script type="text/javascript">
    function AuswahlReset (feldname) {
      for (i = 0; i < "document.antrag."+ feldname +".length"; i++)
        if ("document.antrag."+ feldname +".options[i].defaultSelected == true)
            "document.antrag."+ feldname +".options[i].selected = true; }
    </script>

    Anzusprechende menus:

    <select name="vpanrede" size="1" id="vpanrede">
    <option value="--"></option>
    <option value="w">Frau</option>
    <option value="m">Herr</option>
    </select>

    <select name="vpanrede2" size="1" id="vpanrede2">
    <option value="<?php echo "$vpanrede2"; ?>" selected>
    <?php if (!isset($vpanrede2)) {echo "--";}
    elseif ($vpanrede2 == "w") {echo "Frau"; }
    elseif ($vpanrede2 == "m") {echo "Herr"; } ?></option>
    <option value="w">Frau</option>
    <option value="m">Herr</option>
    </select>

    etc.

    Aufruf des Skriptes mit variablenübergabe so wie ich es mir vorstellen würde, daß aber leider nicht funktioniert:

    <input type="button" name="loeschen" value="loeschen"
     onClick="AuswahlReset('vpanrede'); ">

    <input type="button" name="loeschen" value="loeschen"
     onClick="AuswahlReset('vpanrede2'); ">

    So könnte ich beliebig viele Dropdownmenus mit nur einem Script aus verschiedenen events heraus abrufen. Ich denke das ich die zu übergebene Variable in dem SCript nur anders maskieren muss aber wie?

    Vielen Dank im Voraus.

    Sokrates

  2. hi,

    du suchst http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. danke, die Seite hatte ich schon durchgeguckt, aber für mein Problem findet sich dort leider keine Lösung. Es geht nur darum, wie ich die im Aufruf übergebene Variable (feldname) im Script einfüge.

      Im Grunde geht es also nur um genau diesen Teil des Scriptes:

      "+ feldname +" <<<<

      Die dom struktur ist ansonsten ja richtig und wenn ich statt des o.g. strings direkt vpanrede oder vpanrede2 reinschreibe funktioniert auch alles.

      script:

      <script type="text/javascript">
      function AuswahlReset (feldname) {
        for (i = 0; i < "document.antrag."+ feldname +".length"; i++)
          if ("document.antrag."+ feldname +".options[i].defaultSelected == true)
              "document.antrag."+ feldname +".options[i].selected = true; }
      </script>

      Anzusprechende menus:

      <select name="vpanrede" size="1" id="vpanrede">
      <option value="">--</option>
      <option value="w">Frau</option>
      <option value="m">Herr</option>
      </select>

      <select name="vpanrede2" size="1" id="vpanrede2">
      <option value="">--</option>
      <option value="w">Frau</option>
      <option value="m">Herr</option>
      </select>

      Funktionsaufruf:

      <input type="button" name="loeschen" value=""
       onClick="AuswahlReset('vpanrede'); ">

      <input type="button" name="loeschen2" value=""
       onClick="AuswahlReset('vpanrede2'); ">

      1. danke, die Seite hatte ich schon durchgeguckt, aber für mein Problem findet sich dort leider keine Lösung. ...

        Doch tut es. Du hast dir das Schema 4 genau angeschaut?

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. danke, die Seite hatte ich schon durchgeguckt, aber für mein Problem findet sich dort leider keine Lösung. ...

          Doch tut es. Du hast dir das Schema 4 genau angeschaut?

          stimmt, dachte es täte nichts zur Sache welche schreibweise ich wähle und hab daher die Beschreibung der einzelnen schreibweisen nur überflogen der letzte Satz zu Punkt 4 war dann der entscheidende Hinweis

          Danke!

      2. Hi,

        function AuswahlReset (feldname) {
          for (i = 0; i < "document.antrag."+ feldname +".length"; i++)

        Hier setzt Du einen String zusammen. Du möchtest aber eine Objekt-Referenz erzeugen:
        i < document.antrag.elements[feldname].length

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
        1. Hallo Joachim

          i < document.antrag.elements[feldname].length

          vielen Dank. Funktioniert jetzt auch wunderbar. Zusätzlich musste ich nur noch beim Funktionsaufruf statt

          onclick="AuswahlReset(vpanrede)"

          die Variable so angeben.

          onClick="AuswahlReset('vpanrede');

          Danke für die Hilfe.