Hören Sie auf zu raten: Wie Sie mit JavaScript den ausgewählten Wert aus einem Dropdown erhalten?
\n\nHaben Sie jemals die Situation erlebt, dass ein Benutzer etwas in einer Auswahlliste auf einer Website auswählt, Ihr Programm dies aber nicht "sehen" kann? Kommt Ihnen bekannt vor, oder? Dies ist eine der häufigsten Fragen auf Stack Overflow (und das zu Recht!), die Tausende von Anfängern und sogar erfahrenen Entwicklern stellen. Es scheint einfach, aber es gibt Nuancen, die wir heute ein für alle Mal klären werden.
\n\nIn diesem Artikel zeige ich Ihnen nicht nur eine, sondern mehrere Möglichkeiten, wie Sie den ausgewählten Wert aus einem Dropdown mit reinem JavaScript erhalten. Sie erfahren, wie sich value von selectedIndex unterscheidet, wie Sie das Auswahlereignis behandeln und wie Sie die Falle mit der Mehrfachauswahl vermeiden. Los geht's!
Der einfachste Weg: die Eigenschaft value
\n\nStellen Sie sich vor, Sie haben ein normales HTML-Select:
\n\n<select id="city">\n <option value="moscow">Moskau</option>\n <option value="spb">Sankt Petersburg</option>\n <option value="kazan">Kasan</option>\n</select>\n\nUm den ausgewählten Wert zu erhalten, müssen wir nur zwei Dinge tun:
\n\n- \n
- Das
<select>-Element im DOM finden. \n - Seine Eigenschaft
valueauslesen. \n
So sieht das im Code aus:
\n\nconst selectElement = document.getElementById('city');\nconst selectedValue = selectElement.value;\n\nconsole.log(selectedValue); // Gibt z.B. "spb" aus\n\nWichtig! Die Eigenschaft value des <select>-Elements gibt automatisch das value-Attribut der aktuell ausgewählten <option> zurück. Dies ist der einfachste und empfohlene Weg, wenn Sie den Wert und nicht den Text benötigen.
Und wenn Sie den Text des ausgewählten Punktes benötigen?
\n\nManchmal benötigen wir nicht den Wert, sondern das, was der Benutzer sieht (z.B. "Moskau" statt "moscow"). Dafür gibt es die Eigenschaft textContent (oder innerText) der ausgewählten Option. Zuerst müssen wir jedoch die Option selbst abrufen:
const selectElement = document.getElementById('city');\nconst selectedOption = selectElement.options[selectElement.selectedIndex];\nconst selectedText = selectedOption.textContent;\n\nconsole.log(selectedText); // Gibt "Moskau" aus\n\nHier verwenden wir selectedIndex – den Index des ausgewählten Elements (beginnend bei 0). Dann greifen wir auf die Sammlung options zu und holen das entsprechende Element.
Wie reagiert man in Echtzeit auf eine Änderung der Auswahl?
\n\nDen Wert nur einmal zu erhalten ist gut, aber meistens müssen wir etwas tun, wenn der Benutzer die Auswahl ändert. Dafür verwenden wir das Ereignis change:
const selectElement = document.getElementById('city');\n\nselectElement.addEventListener('change', function() {\n const selectedValue = selectElement.value;\n const selectedText = selectElement.options[selectElement.selectedIndex].textContent;\n \n console.log('Ausgewählter Wert:', selectedValue);\n console.log('Ausgewählter Text:', selectedText);\n});\n\nJedes Mal, wenn der Benutzer die Stadt in der Auswahlliste ändert, erhalten wir sofort aktualisierte Daten. Praktisch, oder?
\n\nBesonderer Fall: Mehrfachauswahl (multiple select)
\n\nWas aber, wenn Sie eine Auswahlliste mit Mehrfachauswahl haben? Zum Beispiel:
\n\n<select id="skills" multiple>\n <option value="html">HTML</option>\n <option value="css">CSS</option>\n <option value="js">JavaScript</option>\n</select>\n\nIn diesem Fall gibt selectElement.value nur den ersten ausgewählten Wert zurück, nicht alle. Um alle ausgewählten Punkte zu erhalten, müssen Sie die Sammlung options durchlaufen:
const selectElement = document.getEl