Einträge in Dropdown-Menüs aus- und wieder EINBLENDEN!!!

zEn0s

New member
hallo,

ich bastle mir schon den ganzen tag aus irgendwelchen javascripts alles mögliche zusammen das dann am ende doch nicht so funktioniert wie ich es will. hab auch schon etwas gefunden das mir hilft aber jetzt komm ich nicht mehr weiter....


Ich bin gerade dabei, für meine Firma einen Online-Konfigurator zu erstellen, mit dem man sich online seinen Traum-PC zusammenstellen kann. Ich mach das ganze mit Dreamweaver und benutze u.a. Ebenen und hab bestimmt schon um die 10 einzelnen Scripts zu einem großen zusammengefügt, ist aber immer noch nur ein Roh-Entwurf :(

Ich möchte nun die Komponenten in den Dropdown-Menüs verschwinden lassen, die nicht zur ausgewählten passen, z.B. wenn der Kunde eine P4-CPU auswählt, sollten die AMD Sockel A-Mainboards in der oberen "Mainboard"-Dropdown-Box verschwinden und nur die Intel-Mainboards verbleiben.

Das Verschwindenlassen hab ich schon gut hinbekommen, nur das Wiederherstellen der verschwundenen Felder bereitet mir Kopfschmerzen. Das Element habe ich aus der Auswahlliste gelöscht indem ich ihm "Null" zugeordnet habe.


Die Funktion:

PHP:
<script type="text/javascript">
function a8vdis () {
  document.Form.Mainboard.options[document.Form.Mainboard.length - 1] = null;
}
</script>



Und hier im Dropdown-Menü löse ich mit "javascript:a8vdis()" die Funktion aus:
(die unteren 2 Auswahlpunkte rufen jeweils eine Ebene auf, der oberste blendet beide Ebenen aus)

PHP:
<select name="Netzteil" onChange="javascript:location = this.form.Netzteil.options[this.form.Netzteil.selectedIndex].tdx" size="1">
          <option tdx="javascript:MM_showHideLayers('Layer10','','hide','Layer20','','hide')">- Auswahl -</option>
          <option tdx="javascript:a8vdis(),MM_showHideLayers('Layer10','','show','Layer20','','hide')">360 Watt-Netzteil</option>
          <option tdx="javascript:MM_showHideLayers('Layer20','','show','Layer10','','hide')">550 Watt-Netzteil</option>
        </select>

Das soll wenn man das 360W-Netzteil auswählt, das Asus A8V-Mainboard im Menü "Mainboard" ausblenden.
Der nächste Schritt wäre also, das A8V Mainboard wieder einzublenden wenn man das 550W-Netzteil ausgewählt hat.
Das krieg ich aber irgendwie nicht hin, ich werd noch verrückt :whacky:

Hier der Link, ist aber nur eine Betaversion, bei der erstmal die Grundfunktionen funktionieren müssen.

Bitte helft mir, ich weiß nicht mehr weiter :confused:



Gruß, Dietmar
 
hi sanchez,

danke für deine antwort!

aber nein, wenn ich einen GANZ neuen Eintrag hinzufüge besitzt dieser ja nicht mehr die Eigenschaft, die Ebene einzublenden. Auch basiert das Ausblenden von Einträgen auf der Reihenfolge von oben nach unten und deswegen wäre es besser, den Original-Eintrag an der Original-Stelle wieder erscheinen zu lassen.

Edit:

deinen Link kannte ich übrigens schon ;)

PHP:
<option tdx="javascript:MM_showHideLayers('Layer20','','show','Layer10','','hide')">550 Watt-Netzteil</option>
Mit der Funktion des 500W-Netzteil-Eintrags "MM_showHideLayers" wird ja auch eine Ebene eingeblendet, die Details wie Preis etc anzeigt. wenn ich das 550W-Netzteil aus der Liste verschwinden lasse und einfach wieder einen neuen mit dem selben Namen hinzufüge, lässt dieser nicht mehr die Ebene erscheinen. Ich glaube auch, dass der neue Eintrag dann am Ende der Liste erscheinen wird, was dieses "lösche zweiten Eintrag von oben"-Prinzip durcheinander bringt, sobald der Benutzer das mehr als einmal macht....
 
Zuletzt bearbeitet:
Wie wäre es mit Ausblenden?

document.Form.Mainboard.options[optionDieDuAusblendenWillst].style.display='none';
 
@ dms:

PHP:
document.Form.Mainboard.options[option.XXX].style.display='none';
Was setze ich da für XXX ein, -1 für den 2. Eintrag von oben oder einfach den angezeigten Namen des Mainboards, z.B."Asus A8V Deluxe"?

Ich habe mir überlegt, wenn ich jedem Eintrag eine ID gebe: <Option ID="XY2A" tdx=".......>, könnte man vielleicht gezielt den Eintrag mit der gegebenen ID aus/einblenden?
 
@ Pit Is' nich wahr, oder? Jaja, diese "mehrfach ausgezeichnete Microsoft Internet Explorer 6 Technologie" hat's schon drauf. ;)

@zEn0s Garnichts einsetzen, da, wie Pit meint, es wohl nicht im IE funktioniert. Generell sprichst Du das erste Element mit 0 an, das zweite mit 1 usw.

Was soll tdx eigentlich für ein Attribut sein? Ist das ein Platzhalter für einen EventHandler? Rein Theoretisch kannst Du das Attribut auch per JS wieder einsetzen.

option.setAttribute('tdx')='was auch immer';

Sofern es sich hierbei aber um einen Platzhalter für 'nen EventHandler handelt, wird Dir das aber auch nichts bringen, da der IE hier ebenfalls nicht mitspielt und bei dem Event nicht Handled...jedenfalls habe ich letztens die Erfahung gemacht beim dynamischen Erzeugen von onmouseover's in <li>-Tags.

Du musst also die Option irgendwo zwischenspeichern (inkl. Index-Nummer), dann entfernen (=NULL). Beim Einblenden dann eben das zwischengespeicherte Objekt wieder hinzufügen. Über den gespeicherten Index weist Du an welcher Stelle. Hoffe das funktioniert so...
 
@ dms: ursprünglich stand da "Value=" statt "tdx=". Ich benutze aber ein Perl-Script, das das was hinter dem "Value" steht zu mir schickt statt dem was ich identifizieren kann ;) Früher stand also hinter dem <select.... javascript:location = this.form.Netzteil.options[this.form.Netzteil.selectedIndex].VALUE" und jetzt steht da halt ....tdx damit ich keinen Sch... ins Postfach bekomme. Hat nix mit den IDs zu tun...

Zugegeben ich hab mich jetzt nicht gerade professionell ausgedrückt aber das liegt daran dass ich keine Ahnung habe was du da gerade gesagt hast :brainless Ich hab ja auch erst vor 2 Tagen mit JS ernsthaft angefangen...

Wenn ich dich aber richtig verstanden habe, willst du dass ich dem versteckten Eintrag das Attribut "wieder sichtbar" oder so gebe. Wie mache ich das?

Deine letzte Erklärung hört sich ganz interessant an und vor allem MACHBAR! Nur blicke ich mal wieder nicht wie man das machen kann....
 
vielleicht formuliere ich meine Frage neu:

Wie kann ich einer <option> ein Attribut zuweisen z.B. "visible" oder "hidden"?

Gruß,
Dietmar
 
Moin!
zEn0s schrieb:
Wie kann ich einer <option> ein Attribut zuweisen z.B. "visible" oder "hidden"?
Es wäre besser, mit display 'rumzuspielen anstatt mit visibility (denn sonst hättest Du eine "Lücke", wo eine Option ausgeblendet ist). Wie das geht, hat dms bereits gepostet:

document.Form.Mainboard.options[optionDieDuAusblendenWillst].style.display='none';

Allerdings - ich wiederhole mich - funzt das in IE ebensowenig wie ein Herumspielen mit visibility.

Ahoi - Pit
 
Hi,

'tschuldige, das hab ich zuerst nicht erkannt. Trotzdem Danke, ich werde mich weiter nach einer Lösung umschauen.
 
Zurück
Oben