MrSchmidtdtdt: Select Array korrekt referenzieren?

Guten Morgen,

angenommen ich habe ein <select> Array:

  
<form name="x">  
  <select id="y" name="z[]" multiple>  
</form>  

und möchte dessen selectedIndex ansprechen, so funktioniert hier weder:

document.x.z.selectedIndex = 0;

noch:

document.x.z[].selectedIndex = 0;

Lasse ich die "[]" im Namen weg, kann ich die Werte später nicht auswerten.

Gibt es hier eine Lösung?

Beste Grüße,
MrSchmidtdtdtdt

  1. Hallo,

    <form name="x">

    <select id="y" name="z[]" multiple>
    </form>

    
    >   
    > und möchte dessen selectedIndex ansprechen, so funktioniert hier weder:  
    >   
    > `document.x.z.selectedIndex = 0;`{:.language-javascript}  
      
    natürlich nicht, denn der Name des Elements ist nicht "z", sondern "z[]".  
      
    
    > `document.x.z[].selectedIndex = 0;`{:.language-javascript}  
      
    Auch klar, denn du hast kein Element mit dem Namen "z" - schon gar nicht eines, das ein Array ist.  
      
    
    > Gibt es hier eine Lösung?  
      
    Adressierung von Objekteigenschaften, [Schema 4](http://de.selfhtml.org/javascript/objekte/forms.htm).  
      
    Ciao,  
     Martin  
    
    -- 
    F: Wer ist der Herrscher über Wasser, Wind und Wellen?  
    A: Der Friseur.  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    
    1. Hallo und danke für die schnelle Antwort.

      document.x.z[].selectedIndex = 0;
      Auch klar, denn du hast kein Element mit dem Namen "z" - schon gar nicht eines, das ein Array ist.

      Dieser Punkt ist mir nicht ganz klar. Wie du bereits zu Anfang richtig gestellt hast, heißt mein Element "z[]", welches ich in Beispiel #2 auch korrekt anspreche (mit "document.x.z[]..").

      Soweit ich dies nun nach der Begutachtung des von dir geposteten Links beurteilen kann, liegt das Problem hier bei der Übergabe des Select-namen. Dieser muss als String übergeben werden, wie in Schema 4 demonstriert wird.

      Nun habe ich jedoch kein Problem bei der Übergabe des Formularnamens, sondern dessen Unterelementes.
      Was im Beispiel also mit "objekt.objektart["unterobjekt"]" bzw "document.forms["Formularname"]" gelöst wird, trifft bei mir nicht zu.

      Vermutlich benötige ich etwas wie "document.x.select["z[]"].."? Wie wäre in diesem Beispiel die konkrete Syntax?

      Grüße,
      MrSchmidtdtdtdt

      1. Hi,

        Nun habe ich jedoch kein Problem bei der Übergabe des Formularnamens, sondern dessen Unterelementes.
        Was im Beispiel also mit "objekt.objektart["unterobjekt"]" bzw "document.forms["Formularname"]" gelöst wird, trifft bei mir nicht zu.

        Die Punkt-Syntax und die Klammer-Syntax zum Zugreifen auf Eigenschaften eines Objekts sind weitgehend äquivalent. Hast du also ein Objekt "document.x", welches u.A. die Eigenschaft "z" besitzt, dann sind document.x.z und document.x['z'] identisch.

        Anders sieht es aus, wenn der Name der Eigenschaft Zeichen hat, welche die Punkt-Syntax verbieten. In deinem Beispiel ist der Name der Eigenschaft z[]. Greifst du auf document.x.z[] zu, ist dies äquivalent zu (document.x.z)[]. Dies meinte Martin damit, dass z kein Array ist. Hier geht also nur die Klammersyntax, document.x['z[]'] ist also das, was du suchst.

        Bis die Tage,
        Matti

        1. Hi,

          vielen Dank euch beiden.
          <http://de.selfhtml.org/javascript/objekte/elements.htm@title=Beispiel #4> funktioniert nun ebenfalls. Auch wenn ich die von dir soeben erläuterte, kürzere Schreibweise bevoruge.

          In meinem zweiten Post geht es im wesentlichen darum, dass ich ein Gegenstück zu ...forms[""].. für Unterelemente gesucht habe und statt wie mir nun klar geworden ist einfach .elements[""]. zu verwenden, Dinge wie .select[""] bzw. sogar .selects[""]. ;)  ausprobiert habe.

          Grüße,

  2. @@MrSchmidtdtdt:

    nuqneH

    angenommen ich habe ein <select> Array:

    <form name="x">
      <select id="y" name="z[]" multiple>
    </form>

      
    Und du nimmst auch an, dass dem Nutzer klar ist, dass er mehrere Optionen wählen kann? Und auch wie?  
      
    Gewagte Annahme, würde ich sagen.  
      
    Für Mehrfachauswahl sind Checkboxen vermutlich das bessere Mittel der Wahl.  
      
    Qapla'
    
    -- 
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.  
    (Mark Twain)
    
    1. Ein ziemlich guter Einwand.. wahrscheinlich werde ich dies gleich umstellen.

      Danke.