Webdesign in Siegen

[JS] Wert eines DropDown-Menüs ohne Formular

Fragen zum Thema JavaScript können hier gestellt werden

Moderatoren: Basti, Ingo

[JS] Wert eines DropDown-Menüs ohne Formular

Beitragvon Basti am 28.09.2007, 11:46

Hi,

ich bin gerade dabei, mir ein paar nette JavaScript Zusätze für meine Scripte zu erstellen, um sie benutzerfreundlicher zu machen.

Im Moment habe ich vor, ein DropDown Menü zu erstellen, in dem man einen bestimmten Eintrag auswählen kann und bei Klick auf einen darauffolgenden Button soll man anhand des value-Werts des Eintrag zu einer bestimmten Seite weitergeleitet werden.
Leider besteht meine Problem nun darin, den selektierten Wert zu bestimmen, da der im Moment nicht zurückgegen wird.
Vielleicht hängt es damit zusammen, dass das DropDown-Menü und der Button nicht innerhalb eines Formulars stehen, da das ganze aber nur "Link"-Funktion haben soll und ich es öfters verwenden möchte soll auch kein extra Formular angelegt werden.

Hier einfach mal mein Code:

Code: Alles auswählen
<script type="text/javascript"><!--
function show_gallery()
{
   var link_text = document.getElementsByName('select_gallery').value;
   var link = "index.php?link_text=" + link_text;
   location.href = link;
}
//--></script>

<select name="select_gallery">
   <option value="2D">2D</option>
   [...]
</select>
<input type="submit" name="show_gallery" value="Galerie anzeigen" onclick="javascript:show_gallery();" />


Gibt es da vielleicht eine Lösung für das Problem? Leider kenne ich mich mit JS noch nicht so gut aus, aber vielleicht liegt es ja auch einfach daran, dass solche Sachen normalerweise in Formularen stehen und JS die Daten dann nicht alle verarbeiten kann.

Achja, die Lösung einfach ein DropDown Menü mit direkter Weiterleitung zu erstellen möchte ich übrigens bewusst nicht, weil das meiner Meinung nach nicht so schön ist.
Gruß,
Basti


Bild Bild
Benutzeravatar
Basti
Moderator
 
Beiträge: 1774
Registriert: 15.06.2006, 17:33
Wohnort: Rheinbreitbach

Beitragvon Ingo am 28.09.2007, 13:02

Hi, Basti.
Wahrscheinlich ist die Lösung folgende: getElementsByName(...)
gibt nicht ein Element, sondern ein Array von allen Elementen mit
name=... zurück. Man muss also einen Array-Index angeben (hier [0]):
Code: Alles auswählen
var link_text = document.getElementsByName('select_gallery')[0].value;

Wenn du mehrere Elemente "ByName" ansprechen willst, könnte es
beim Array-Index zu Verwechslungen kommen (besonders wenn der
Code noch entwickelt wird). Vllt. ist dann der Zugriff mit
getElementById(...) "treffsicherer".

PS: Was die Formularfrage angeht: input-Elemente dürfen wohl nicht
direkt im body stehen, wohl aber innnerhalb von Block- oder Inline-
Elementen (Ausnahme: Transitional?).
Benutzeravatar
Ingo
Moderator
 
Beiträge: 434
Registriert: 01.04.2007, 23:21
Wohnort: Neuss/NRW

Beitragvon Basti am 28.09.2007, 13:17

Super, danke!

Das war was ich brauchte, soll also heißen, dass es nun funktioniert. Bin jetzt auch auf eine ID umgestiegen, da das ja etwas besser ist und es nicht so leicht zu Verwechslungen kommen kann.

Das "s" bei getElementsByName hatte mich schon verglichen mit dem Id-Vertreter gewundert, aber ich hatte nicht daran gedacht, dass das dann ein Array sein könnte ;)

Vielen Dank nochmals :thumbsup:
Gruß,
Basti


Bild Bild
Benutzeravatar
Basti
Moderator
 
Beiträge: 1774
Registriert: 15.06.2006, 17:33
Wohnort: Rheinbreitbach


Zurück zu JavaScript

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast