# Inhalt eines Arrays überprüfen?



## redlama (25. August 2004)

Hallo zusammen!

Ich habe ein Array unter HTML, das ich an JavaScript übergebe.
Jetzt habe ich das Problem, dass ich nicht wirklich (eigentlich so gut wie gar keine) Ahnung von JavaScript habe.
Ich muss aber überprüfen ob dieses Array mit mindestens einem Element gefüllt ist. Ein "alert" kriege ich ja noch hin, falls das Array leer sein sollte, aber wie finde ich heraus ob das Array leer ist oder nicht?

Bin für jede Idee oder jeden Vorschlag dankbar.

redlama


----------



## Tobias Menzel (25. August 2004)

Hi,

kommt ganz darauf an, wie Dein Array definiert ist. Willst Du die Größe des Array auslesen (dynamische Arrays) geht es mit
	
	
	



```
meinArray.length;
```
Ansonsten kannst Du natürlich die Elemente einzeln abfragen:
	
	
	



```
var foundOne = 0;
for (i = 0; i < meinArray.length; i++) {
    if (meinArray[i]) {
        foundOne++;
    }
}
if (foundOne) {
    alert(foundOne + " Elemente gesetzt");
} else {
    alert("keine Elemente gesetzt");
}
```
 das geht natürlich nur, wenn der Wert 0 als "nicht gesetzt" gilt. Ob eine explizite Überprüfung nach NaN bzw. Null möglich ist, habe ich jetzt nicht ausprobiert.

Gruß


----------



## redlama (25. August 2004)

Also entweder bin ich zu blöd, oder geht nicht!
(Ich vermute eher das Erste ...)

Hier mal mein Quellcode:

<td width="244">
  <div align="left">
    <h1 align="left">
      <input type="text" size="18" name="Name">
    </h1>
  </div>
</td>

<select size="4" name="Unterkunft[]" multiple>
  <option value="Ferienhaus">Ferienhaus</option>
  <option value="Ferienwohnung">Ferienwohnung</option>
  <option value="Gästehaus">Gästehaus</option>
  <option value="Hotel">Hotel</option>
  <option value="Hotelappartement">Hotelappartement</option>
  <option value="Pension">Pension</option>
  <option value="Privatunterkunft">Privatunterkunft</option>
</select>

Beim submit wir dann folgender JavaScript Code aufgerufen:

<script Language="JavaScript">
!--
function Form1_Validator(theForm)
{
  if (theForm.Name.value == "")
  {
    alert("Geben Sie einen Wert in das Feld \"Name\" ein.");
    theForm.Name.focus();
    return (false);
  }
  return (true);
}
//-->
</script>

Aber wie muss der Quelltext aussehen für die Überprüfung, ob eine Unterkunft gewählt wurde?
Ich kriegs einfach nicht auf die Reihe @ Datic


----------



## Tobias Menzel (25. August 2004)

Hi,

warum versuchst Du, das "select"-Element als Array anzulegen? Die gewählte Option lässt sich prima über die value-Eigenschaft auslesen: 
	
	
	



```
<script Language="JavaScript">
function checkvals(theForm) {
    alert(theForm.Unterkunft.value);
}
</script>

<body>
<form action="" method="get">
<select size="4" name="Unterkunft" multiple>
<option value="Ferienhaus">Ferienhaus</option>
<option value="Ferienwohnung">Ferienwohnung</option>
<option value="Gästehaus">Gästehaus</option>
<option value="Hotel">Hotel</option>
<option value="Hotelappartement">Hotelappartement</option>
<option value="Pension">Pension</option>
<option value="Privatunterkunft">Privatunterkunft</option>
</select>
<input name="testbut" type="button" id="testbut" value="Testen" onClick="checkvals(this.form)">
</form>
</body>
```

Gruß


----------



## redlama (25. August 2004)

weil ich im anschluss an eine positive Überprüfung die Daten an ein PHP Script sende und dort alle gewählten Unterkünfte angezeigt bekommen will, jedoch nur das letzte angezeigt wird, wenn ich Unterkunft im HTML Code nicht zum Array mache, ...


----------



## Tobias Menzel (25. August 2004)

Jetzt ist der Groschen (hoffentlich) gefallen  

Versuch es einmal so:
	
	
	



```
function checkvals(theForm) {
    for (i=0; i<theForm.Unterkunft.options.length; i++) {
		alert(theForm.Unterkunft.options[i].selected);
	}
}
```
Ob und wie die Definition des select-Elementes als Array funktioniert, weiß ich nicht, aber Du könntest die markierten Elemente in einem HiddenControl speichern (z.B. als String).
Gruß


----------



## redlama (25. August 2004)

Hab ich probiert, hat aber leider nicht funktioniert, ...

Ich hab das dumme Gefühl, er erkennt Unterkunft irgendwie nicht, ...

Nur weiß ich immer noch nicht warum, sollte es daran liegen, das Unterkunft ein Array ist?


----------



## redlama (25. August 2004)

ICH HAB'S!

So muss der JavaScript Code aussehen, damit es funktioniert, wie es soll:

  if (theForm['Unterkunft[]'].value == "")
  {
    alert("Wählen Sie mindestens 1 der \"Unterkunft \"-Optionen.");
    theForm['Unterkunft[]'].focus();
    return (false);
  }

Trotzdem nochmals Danke @ Datic

redlama


----------



## Tobias Menzel (25. August 2004)

Ok, aber bei mir hat meine Version auch funktioniert, wenn ich "Unterkunft" im HTML-Code _nicht_ als Array definiert habe.

Gruß


----------



## redlama (25. August 2004)

> _Original geschrieben von Datic _
> * Ok, aber bei mir hat meine Version auch funktioniert, wenn ich "Unterkunft" im HTML-Code nicht als Array definiert habe.
> 
> Gruß *



 Ja, in dem Fall hat es bei mir auch funktioniert, ... 

redlama :suspekt:


----------

