"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

dropdown-menues in html

flocky 22.10.2003 - 19:17 1719 16 Thread rating
Posts

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
hallo

ich habe ein dropdown-menü und ich möchte dass die seite die einer bestimmten option im dropdown zugeordnet ist aufgerufen wird wenn man sie nur im dropdown auswählt, also nicht auswählen => submit sondern nur auswählen. dazu hab ich folgenden code im i-net gefunden (den onChange, der rest is nur zum zweck der übersichtlichkeit da)
Zitat
<select name="select2" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option selected value="">Verlag
<option>--------------------</option>
</select>

er funktioniert auch prächtig, allerdings weiß ich nicht genau warum da so viel steht, ich mein das document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].valu :confused:
kann mir jemand erklären was das bedeutet? ich hab nämlich keine ahnung, auf der page auf der das steht steht auch nur der code und ich weiß nicht ob das genau so ist wie ichs brauche usw. ich muss das einfach wissen :rolleyes:

tia :)
Bearbeitet von flocky am 29.10.2003, 00:31

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4457
window ist das DOM window-Objekt; ein Javascript Objekt mit dem du auf die Eigenschaften des Fesnters zugreifen kannst.

window.location ist eine Eigenschaft; naemlich die der aktuellen Adresse, URL, whatsoever

document ist das Javascript DOM Objekt mit dem du auf den Inhalt einer Seite zugreifen kannst; eine repraesentation der HTML Seite (er gesammten!) durch einen sog. DOM-Tree

document.guideform nutzt eine veraltete Variante, auf Formulare innerhalb von Seiten direkt durch ihren Namen (name-Attribut) zuzugreifen

document.guideform.guidelinks ist der Name des <select>-Elements in diesem Formular.

document.guideform.guidelinks.options sind die ganzen <option>-Elemente die du anfuehrst; als array.

document.guideform.guidelinks.selectedIndex ist die Nummer des gerade Ausgewaehlten Elementes des <select>-Elements (beginnend bei 0). Diese bietet quasi den Index als Zugriff auf die ganzen <option>s. Eine <option> hat immer einen Wert (.value) assoziert. <option value="http://wohinichgehe/duauch">Gehe dorthin</option><select> triffst. Dann sucht er sich raus, welches <option>-Element wurde ausgesucht, nimmt desen value (welche Sinnigerweise eine URL sein sollte) und stopft den als neue Adresse in die Browser location.

Eleganter ist es, auf das <select>-Element selbst zu referenzieren. das onchange-Event wird ja als Methode von dem jeweiligen Objekt auferufen. Was in onchange="" steht, muss man daher als Methodenaufruf (select-Element).onchange() sehen. D.h. darin kann ich mit this.<eigenschaft|methode> auf das Objekt selbst verweisen:

Code:
onchange="window.location = this.options[this.selectedIndex].value"

Kuerzer, wartbarer.
Bearbeitet von Rektal am 22.10.2003, 20:28

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
danke für die ausführliche erklärung :)

ich bin schon ein bissi selbst draufgekommen, habs grad ausgebessert.

jetz hab ich aber noch ein problem, und das is noch viel schlimmer. ich übergebe die werte per <form> und ich hab 3 dropdowns nebeneinander, also in einer zeile und ich kann pro zeile aber nur ein <form> haben, wie kann ich das lösen? :confused:

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
a) table
b) div float:left
c) form display:inline bzw display:none oder margin/padding auf 0px
d) alle dropdowns in ein <form>

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
Zitat von atrox
a) table
b) div float:left
c) form display:inline bzw display:none oder margin/padding auf 0px
d) alle dropdowns in ein <form>
die form fragt ja immer nur den zustand von einem dropdown ab, also wenn ich alle drin hab in einer form, dann hab ich beispielsweise das ersten dropdown auf "praxis" und egal was ich bei den anderen auswähle, er fragt dann die form ab und die form sagt "praxis" :rolleyes:

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
es gibt überhaupt nichts was dagegen spricht, mehrere dropdowns in einem form zu haben - jedes erhält seinen eigenen namen/id, jedes hat seinen eigenen onchange-handler.

oder verstehe ich dich da jetzt falsch?

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
hm... ich weiß jetz gar nicht, ich mach das zum ersten mal :D ich kann nur das sagen was ich ausprobiert hab, aber jetz bin ich eh müde http://www.click-smilies.de/sammlun...-smiley-009.gif
ich mach morgen in der schule weiter, dann post ich wieder :D

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
ok, das problem is weitgehend gelöst, hab für jedes ein eigenes form, die forms kann man ja hintun wo man will :rolleyes:
danke mal an alle helfenden ;)

aber es gibt noch ein kleines problem und zwar:
ich hab jetz meine 3 dropdowns, das erste heißt "praxis", das zweite "verlag" und das dritte "religion". in den dropdowns soll von anfang an was drin stehn, also hab ich die ersten werte (praxis, verlag, religion) mit <option selected... stehn. wenn man aber jetz das dropdown anwählt und beispielsweise praxis anwählen will dann gibt das dropdown den wert nicht weiter weil dieser wert ja sowieso schon ausgewählt ist.
ich hab auch schon einen zweiten wert mit praxis gemacht, der eine is selected und hat keinen value, und der andere is der richtige, aber erstens schauts schiach aus im dropdown und zweitens gibts an ausnahmefehler wenn man den ohne value anklickt :(
was kann ich da noch machen?

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
1. du könntest deine besch* code im ersten post auf eine länge kürzen die auf einen bildschirm mit weniger als 2048 pixel breite passt
2. du könntest statt dem ie einen browser verwenden... - wie ich wusste dass du den ie verwendest? verrat' ich nicht :p
2a: du könntest den startwert per javascript setzen

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4457
Zitat von flocky
Zitat von LunaticLord
Final Destination (2) hat ein offenes Ende, wenn auch nicht gerade ein sehr glückliches ;)

Du kannst versuchen das normale onclick-Event noch abzufangen .. aber ..

Tja, also ich weiss nicht wer immer dir das auch gesteckt hat, aber wie du hier sehr gut siehst eignen sich select-Boxen nicht so optimal fuer die Navigation. Das wird eigentlich nur in seltenen Faellen verwendet (zumeist von Leuten die's nicht besser wissen) weil die Uebersicht gegen 0 geht und es nicht grad sehr intuitiv ist.

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
Zitat von watchout
1. du könntest deine besch* code im ersten post auf eine länge kürzen die auf einen bildschirm mit weniger als 2048 pixel breite passt
2. du könntest statt dem ie einen browser verwenden... - wie ich wusste dass du den ie verwendest? verrat' ich nicht :p
2a: du könntest den startwert per javascript setzen
ad 1. danke für den spam, besser?
ad 2. nochmal danke für die voreiligen schlüsse. ich habe in diesem fall den IE fürs preview verwendet weil es in opera (mein standard-browser) darstellungsprobleme gibt denen ich mich jetz zuwende.
ad 2a: ich hab beim onchange-handler die funktion document.forms[0],reset(); dazugeschrieben und somit gelöst.

² rektal

naja der kunde will eben die dropdowns haben, und bis jetz hats eigentlich gut funktioniert.

und alle die jetzt beim wort "kunde" erschrocken sind und sich fragen warum ein n00b wie ich i-net-pages als job coded: mir wurde es mehr oder weniger von meinen eltern aufgedrängt.

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4457
Es obliegt auch der Verantwortung der Entwickler das sie nicht blind machen was der Kunde will. In solchen Faellen muss man den Kunden erziehen. Gut, wenn man erst anfaengt wird man das kaum schaffen. Dazu gehoert nun mal Erfahrung. Weiter viel Glueck!

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
danke, hast du vielleicht eine lösung mit wenig aufwand weil der typ wartet schon seit gestern darauf dass das problem gelöst wird :(

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von flocky
ad 1. danke für den spam, besser?
spam? eher nicht, ich hab darauf gewartet dass du selber draufkommst - dem war nicht so.
Zitat von flocky
ad 2. nochmal danke für die voreiligen schlüsse. ich habe in diesem fall den IE fürs preview verwendet weil es in opera (mein standard-browser) darstellungsprobleme gibt denen ich mich jetz zuwende.
wie man sieht waren meine schlüsse absolut korrekt...
Zitat von flocky
ad 2a: ich hab beim onchange-handler die funktion document.forms[0],reset(); dazugeschrieben und somit gelöst.
hmm, ich kann dieser problemlösung nicht wirklich folgen...
aber das was ich schon oft gesagt hab, trifft auch hier wieder zu: wenn du nicht den kompletten relevanten code zur verfügung stellst kannst du keine optimale lösung erwarten...

flocky

sn0wner (analphabet)
Avatar
Registered: May 2002
Location: life-compiler
Posts: 1663
owa :rolleyes:
ich glaub zwar nicht dass du dir das gedacht hast aber das musst du selber wissen ;) egal
rektal hat mir auch ohne den kompletten code helfen können ;)
trotzdem danke für deine weltverbesserung.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz