Lieber AlexanderF,
Dein Script ist doch schon ein sehr schöner Ansatz! Schauen wir uns mal die Feinheiten an:
function javaauswahl() {
//Selctfeld in Var
var select = document.auswahlform.select1;
// Selected Value in Var
var selecttext = select.options[select.selectedIndex].innerHTML;
// Selected wert in Var
var selectid = select.options[select.selectedIndex].value;
Soweit war das ja klar. Warum musst Du nun extra prüfen, ob bereits Auswahlmöglichkeiten im zweiten Select sind? Das mag vielleicht Performance-Verbesserungen versprechen, ist in der Praxis aber nur unnötig umständlich. Lasse also die erste if-Abfrage sein!
Damit geht es in Deinem Script dann logischerweise so weiter:
//Checken ob Eintrag Vohanden
for (var i = 0; i <= document.auswahlform.select2.length; i++) {
if (document.auswahlform.select2.options[i].value != selectid) {
//Neues Objekt für Eintrag erstellen
NeuerEintrag = new Option(selecttext, selectid, false, false);
//Objekt hinzufügen
document.auswahlform.select2.options[document.auswahlform.select2.length] = NeuerEintrag;
}
}
} // Ende der function
Ich habe den Startwert von i auf null gesetzt, so wie Du es noch angemerkt hattest.
Wo ist die von mir vorgeschlagene Variable "vorhanden"? Die brauchst Du unbedingt als Merker, da Du sonst bei jedem vorhandenen Auswahlwert, der sich vom einzufügenden unterscheidet, eine Eintragung vornimmst, was je nach Anzahl entsprechend mehrfach geschähe! Schau Dir Deine if-Anweisung an! Wenn unterschiedlich, dann einfügen -> egal wie oft!
Also muss vor die for-Schleife noch der Merker! Code sieht jetzt so aus:
// Merker erzeugen
var vorhanden = false;
//Checken ob Eintrag Vohanden
for (var i = 0; i <= document.auswahlform.select2.length; i++) {
if (document.auswahlform.select2.options[i].value == selectid) {
// Aha! Wert also schon vorhanden! -> Merken!
vorhanden = true;
}
}
// Jetzt wissen wir, ob wir einfügen dürfen, oder ob nicht:
if (!vorhanden) { // Ausrufezeichen invertiert false zu true und umgekehrt,
// lies: "if (nicht vorhanden)"
// jetzt einfügen:
var neu = new Option(selecttext, selectid, false, false);
document.auswahlform.select2.options[document.auswahlform.select2.length] = neu;
}
} // Ende der function
Klarer geworden?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)