Probleme bei abhängigem Drop-Down
Maik W. aus E.
- javascript
Tach zusammen,
ich möchte gerne zwei aus einer mySQL-Datenbank gefüllte, abhängige Dropdown-Felder bauen.
Ich habe versucht, aus den Bröckchen von Herr Ernst und Knusperklumpen mir ein eigenes Script zusammenzubauen. Allerdings bleibt mein zweites -abhängiges- Dropdownfeld leer; Die Javascript-Konsole gibt "myOptions has no properties" aus...
Da ich nicht recht weiß, wofür das 'myOptions = weg-zu-selectbox2;' gut ist, steh ich ein bißchen auf dem Schlauch...
Gefüllt mit der Benennung meiner zweiten Drop-Down-Box ist es immerhin definiert, hat aber keine Eigenschaften...
Kann mir jemand sagen, wie ich welchem Objekt hier Eigenschaften zuweisen muß?
Danke und
Maik
Hallo Maik.
Da ich nicht recht weiß, wofür das 'myOptions = weg-zu-selectbox2;' gut ist, steh ich ein bißchen auf dem Schlauch...
Ich schätze, dass du an dieser Stelle eine Referenz zum select-Element notieren sollst.
Dies kann, wenn sich das select-Element innerhalb eines Formulares befindet, über die document.http://de.selfhtml.org/javascript/objekte/forms.htm#allgemeines@title=forms.http://de.selfhtml.org/javascript/objekte/elements.htm@title=elements-Kollektion geschehen, oder aber wie gewohnt über document.http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName.
Einen schönen Dienstag noch.
Gruß, Ashura
Hallihallo!
Oder, sofern dem auszuwählenden select eine ID gegeben wurde,
getElementById.
Viele liebe Grüße,
Der Dicki
Tach zusammen,
ich möchte gerne zwei aus einer mySQL-Datenbank gefüllte, abhängige Dropdown-Felder bauen.
Der zugriff aus das zweite 'select' gelingt jetzt, allerdings wird das dynamische Array nicht richtig ausgewertet, weil ich keinen Zugriff auf das richtige Array-Element bekomme...
Array bauen:
var projekt_values = new Array();
<?php
$i=0;
$query = "SELECT projekt_id, kunden_ref, projekt_name FROM azvs_projekte ORDER BY projekt_name";
$link = mysql_query($query) OR die(mysql_error());
while($result = mysql_fetch_array($link))
{
echo "projekt_values[".$i."] = new Array('". $result["projekt_name"] ."','". $result["projekt_id"] ."','". $result["kunden_ref"] ."');\n";
$i++;
}
?>
In der Funktion will ich nun auf das dritte Element von 'projekt_values' zugreifen:
// 2 selectbox neu befüllen hier--|
for(i in projekt_values[uebergabe][2])<-|
{
if(projekt_values[uebergabe][i] != "")
{
addOption = new Option(projekt_values[uebergabe][i],projekt_values[uebergabe][i],false,false);
// und hier sollen die Werte 'erstes Element' und 'zweites Element' angezeigt werden
optionNr = parseInt(i);
myOptions[optionNr] = addOption;
}
}
}
Es wird immer nur auf Werte mit dem Index zugegriffen, der in der Übergabe hinterlegt ist und nicht, wie von mir gewollt, auf diejenigen, die die den Übergabewert 'in der dritten Spalte' stehen haben. Wer weiß Rat?
Danke und
Maik
hi,
Array bauen:
Ausgabe?
In der Funktion will ich nun auf das dritte Element von 'projekt_values' zugreifen:
// 2 selectbox neu befüllen hier--|
for(i in projekt_values[uebergabe][2])<-|
{
if(projekt_values[uebergabe][i] != "")
Was willst du hier mit der for-in-Schleife? Die einzelnen Elemente unterhalb von projekt\_values[uebergabe][2] durchlaufen?
Warum versuchst du dann im if, auf projekt\_values[uebergabe][i] zuzugreifen? Das wäre doch dann projekt\_values[uebergabe][2][i].
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }
Tach auch wahsaga,
hi,
Array bauen:
Ausgabe?
var projekt_values = new Array();
projekt_values[0] = new Array('- kein -','1','0');
projekt_values[1] = new Array('Arbeiten an der Clinical-Research-Datenbank','11','2');
projekt_values[2] = new Array('Arbeiten an der HomBRex-Datenbank','9','2');
projekt_values[3] = new Array('Arbeiten an der NHKDB','6','1');
projekt_values[4] = new Array('Arbeiten an der Vipdach-Datenbank','12','2');
projekt_values[5] = new Array('Arbeiten an der Übersee-Datenbank','10','2');
projekt_values[6] = new Array('Arbeitszeitverwaltungssystem','2','3');
projekt_values[7] = new Array('Auftragsabwicklung','18','8');
projekt_values[8] = new Array('Auftragsabwicklung - Sonderwünsche','21','8');
projekt_values[9] = new Array('Eigenverwaltung','8','3');
projekt_values[10] = new Array('Fortbildung','3','3');
projekt_values[11] = new Array('Geschäftsbericht','23','11');
projekt_values[12] = new Array('Gruß aus Essen','4','3');
etc...
In der Funktion will ich nun auf das dritte Element von 'projekt_values' zugreifen:
for(i in projekt_values[uebergabe][2])
{
if(projekt_values[uebergabe][2][i] != "")
{
addOption = new Option(projekt_values[uebergabe][0],projekt_values[uebergabe][1],false,false);
optionNr = parseInt(i);
myOptions[optionNr] = addOption;
}
}
}
Was willst du hier mit der for-in-Schleife? Die einzelnen Elemente unterhalb von projekt_values[uebergabe][2] durchlaufen?
Nein, ich möchte alle 'projekt_values' durchlaufen und immer, wenn der Wert in projekt_values[2] dem Wert in uebergabe entspricht, einen neuen Optionswert bauen, der das zweite Element als Wert enthält und das erste Element als Text anzeigt. Eigentlich ganz einfach, wenn's nicht Javascript wäre...
Maik
hi,
Was willst du hier mit der for-in-Schleife? Die einzelnen Elemente unterhalb von projekt_values[uebergabe][2] durchlaufen?
Nein, ich möchte alle 'projekt_values' durchlaufen
Aber das tust du mit
for(i in projekt_values[uebergabe][2])
doch gerade nicht?
Damit durchläufst du nur alle Eigenschaften, die projekt_values[uebergabe][2] hat - und das müssten nach deinem Beispiel oben die String-Eigenschaften 'Arbeiten an der HomBRex-Datenbank', '9' und '2' sein, plus ggf. weitere, die ein Array-Objekt von seiner Natur her in Javascript hat (z.B. length).
und immer, wenn der Wert in projekt_values[2] dem Wert in uebergabe entspricht
Also möchtest du immer den zweiten Wert des "Unter"-Arrays vergleichen?
Dann möchtest du aber auf projekt_values[x][2] zugreifen.
Das solltest du dann aber mit einer "normalen" nummerischen For-Schleife machen.
Wenn du nämlich projekt_values mittels for in durchläuft, würdest du bspw. auch die Eigernschaft length dieses Array-Objektes als eine seiner Eigenschaften geliefert bekommen - und die hat kein [2] unter sich, welches du vergleichen könntest, weil sie nämlich skalarer Natur, und kein Array ist ...
gruß,
wahsaga