Problem mit JavaScript
zettelbox
- javascript
Guten Abend zusammen,
ich prgrammiere zur Zeit wieder intensiv in PHP, bin aber zur Zeit an einer Stelle angekommen, an der ich ein (eigentlich kleines) JavaScript einfügen möchte. Es geht dabei im einzelnen um ein Formular, in dem man ein Select-Feld findet. Je nach ausgewählter Option dieses Select-Felds soll ein weiteres Selectfeld entsprechende Optionen anzeigen. Praktisch heißt das: Das erste Selectfeld zeigt Oberkategorien, das zweite Select dazu passende Unterkategorien. Hier der Codeausschnitt (steht im <head>-Bereich)
function unterkat () {
if (document.newauction.maincat.options.value = '1') {
Unterkategorie = new Option('Unterkategorie 1', 3);
document.newauction.subcat.options[1] = Unterkategorie;
Unterkategorie = new Option('Unterkategorie 2', 4);
document.newauction.subcat.options[2] = Unterkategorie;
}
if (document.newauction.maincat.options.value = '2') {
}
}
maincat ist das select für die Oberkategorie, subcat das select für die entsprechende Unterkategorie. newauction ist übrigens das Formular.
Wenn also in maincat der Value auf 1 steht, sollen in subcat zwei option-Felder erstellt werden (siehe oben). Nun habe ich aber folgendes Problem:
-> dasselbe Feld wird auch erstellt, wenn value von maincat auf 2 steht.
Die Firefox Fehlerkonsole gibt keine Meldung aus.
Wenn mir jemand helfen könnte, wäre ich sehr dankbar.
Lieben Gruß
zettelbox
PS: Nebenbei suche ich auch noch einen Weg, dass subcat nach jedem Verändern von maincat erst gelöscht wird. Da habe ich zwar schon eine Idee, aber Hilfe von jemandem mit JavaScript-Kentnissen wären schon eine hilfreiche Sache :)
Hallo,
function unterkat () {
if (document.newauction.maincat.options.value = '1')
bist du sicher, dass du hier eine Zuweisung ausführen möchtest? Das wäre in diesem Kontext zumindest höchst ungewöhnlich.
if (document.newauction.maincat.options.value = '2')
Dito.
Die Firefox Fehlerkonsole gibt keine Meldung aus.
Nein, ist ja auch syntaktisch alles korrekt. ;-)
PS: Nebenbei suche ich auch noch einen Weg, dass subcat nach jedem Verändern von maincat erst gelöscht wird.
Dazu existiert der delete-Operator.
So long,
Martin
... und ich habe mich gewundert, warum in JavaScript der Zuweisungs- und Vergleichsoperator eine identische Syntax haben ... Okay, ich nehme an, der Vergleichsoperator ist '=='? Ich probiere es mal aus, dankeschön :)
Guten Abend nocheinmal,
ja, das sieht mir auf jeden Fall schon besser aus, allerdings hänge ich jetzt an einer anderen Stelle. Und zwar ist der Rückgabewert von
document.newauction.maincat.options.value
'undefined'. newauction ist jedoch das Formular, maincat die select-Liste. Wo ist der Fehler, wie spreche ich die gerade selektierte Option an?
Danke für eure Mühen und einen schönen Abend noch,
zettelbox
Hello,
'undefined'. newauction ist jedoch das Formular, maincat die select-Liste. Wo ist der Fehler, wie spreche ich die gerade selektierte Option an?
...das ist doch wirklich alles nicht so schwer herauszufinden, oder? Ich möchte dir ja ein Lob aussprechen, dass du selbst ausprobiert hast was der Vergleichsoperator ist, aber im selben Atemzug machst du es wieder zunichte...
SELFHTML: .selectedIndex
MfG
Rouven
Hello,
'undefined'. newauction ist jedoch das Formular, maincat die select-Liste. Wo ist der Fehler, wie spreche ich die gerade selektierte Option an?
...das ist doch wirklich alles nicht so schwer herauszufinden, oder? Ich möchte dir ja ein Lob aussprechen, dass du selbst ausprobiert hast was der Vergleichsoperator ist, aber im selben Atemzug machst du es wieder zunichte...
SELFHTML: .selectedIndexMfG
Rouven
Naja, vom Grundsatz hilft mir das ja nicht wirklich weiter. Allerdings habe ich das nun auf folgendem kleinen Umweg gelöst:
function unterkat () {
var ausgewaehlt = document.newauction.maincat.selectedIndex;
var moeglichkeit = document.newauction.maincat.options[ausgewaehlt].value;
if (moeglichkeit == '1') {
Unterkategorie = new Option('Unterkategorie 1', 3);
document.newauction.subcat.options[1] = Unterkategorie;
Unterkategorie = new Option('Unterkategorie 2', 4);
document.newauction.subcat.options[2] = Unterkategorie;
}
if (moeglichkeit == '2') {
Unterkategorie = new Option('Kategorie 21', 5);
document.newauction.subcat.options[1] = Unterkategorie;
}
}
Damit funktioniert es tatsächlich wie gewünscht. Ich versuche nun, das automatische Löschen zu implementieren, bin da aber dank delete() erstmal guter Dinge. Vielen vielen Dank für Eure extrem zügige und hilfreiche Hilfe!
Eine schöne neue Woche wünscht
zettelbox