Frank S.: Zugriff auf Felder mit variablen Namen

Hallo zusammen,

Ich würde gerne in einer PHP-Datei mit Javascript auf einzelne Felder zugreifen. Funktioniert soweit auch, bis ich eine Seite mit variablen Feldnamen habe.

Aber mal der Reihe nach. Es funktioniert, wenn ich im HTML-Quelltext folgendes stehen habe:

  
<form name="bla" method="post">  
   <select name="karten" onchange="karten_change">  
   ...  
   </select>  
</form>

Und meine JS-Funktion so aussieht:

  
function karten_change() {  
  
    var karte_a = document. bla.karten.options[document. bla.karten.options.selectedIndex].value;  
    alert(karte_a);  
  
  }  

Da die Felder im zweiten Schritt allerdings aus einer Datenbank generiert werden und ich die Namen dynamisch definieren muss, haben die Felder jetzt solche Namen:

  
<form name="bla" method="post">  
   <select name="karten[1]" onchange="karten_change(1)">  
   ...  
   </select>  
</form>

Ich wollte die Funktion dann entsprechend so anpassen, was aber leider nicht funktioniert:

  
function karten_change(spiel) {  
  
    var karte_a = document. bla.karten[spiel].options[document. bla.karten[spiel].options.selectedIndex].value;  
    alert(karte_a);  
  
  }  

Wäre super, wenn mir jemand sagen könnte, wie ich die JS-Funktion entsprechend anpassen muss damit es funktioniert.

Danke schonmal!

Gruß,
Frank

  1. <form name="bla" method="post">
       <select name="karten[1]" onchange="karten_change(1)">

    Auf so benannte Felder kannst du folgendermaßen zugreifen:

    document.forms.bla.elements["karten[1]"]

    <http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines@title=Schema 4 hier>

    var karte_a = document. bla.karten[spiel].options[document. bla.karten[spiel].options.selectedIndex].value;

    Angenommen spiel ist eine Zahl:

    var elementName = "karten[" + spiel + "]"; // Ergibt dann karten[1] usw.  
    var options = document.bla.elements[elementName].options; // options-Array zwischenspeichern  
    var karte_a = options[ options.selectedIndex ].value; // Gewählte Option ansprechen
    

    Mathias

    1. Super, danke für die schnelle Antwort, so funktionierts problemlos! :-)