dropdown-menues in html

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/dropdown-menues_in_html_96447/page_1 - zur Vollversion wechseln!


flocky schrieb am 22.10.2003 um 19:17

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 :)


Rektal schrieb am 22.10.2003 um 20:25

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.


flocky schrieb am 22.10.2003 um 20:31

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 schrieb am 22.10.2003 um 22:03

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 schrieb am 22.10.2003 um 23:49

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 schrieb am 23.10.2003 um 00:37

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 schrieb am 23.10.2003 um 00:39

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 schrieb am 27.10.2003 um 11:47

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 schrieb am 27.10.2003 um 11:53

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 schrieb am 27.10.2003 um 12:14

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 schrieb am 29.10.2003 um 00:37

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 schrieb am 29.10.2003 um 06:49

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 schrieb am 29.10.2003 um 11:14

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 schrieb am 29.10.2003 um 13:05

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 schrieb am 29.10.2003 um 13:07

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.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025