Wert aus select-Feld auslesen
Thomas
- javascript
Hallo,
ich habe in einem Formular 2 Felder die gleich heißen:
<form name="test" id="test" >
<input type="text" name="114" id="114" value="" />
<select name="114" id="114" /><option value="cm">cm</option><option value="inch">inch</option>/select>
</form>
Nun will ich daneben in einem Div den umgerechneten Wert von cm bzw. Inch schreiben, wenn jemand eine zahl ins input eingegeben hat.
Dies mache ich mit onchange im input-Feld.
Mein Problem sind eben die gleichlautenden Namen, die ich leider nicht ändern kann.
Normalerweise müsste ich so den Value vom select auslesen können:
document.getElementById(114)[1].options[document.getElementById(114)[1].selectedIndex].value
aber ich bekomme da immer nur eine Fehlermeldung von JS:
has no properties
Wie kann ich dies schaffen - Ich probiere jetzt schon seit 4 Stunden.
danke schon mal im voraus.
lg
Thomas
Lieber Thomas,
SELFHTML sagt, dass der Wert des Namensattributes mit einem Buchstaben beginnen muss.
Desweiteren darf eine ID dokumentweit nur einmal vergeben werden (daher heißt die Methode auch "getElementById" und nicht "getElement_s_ById").
Normalerweise müsste ich so den Value vom select auslesen können:
document.getElementById(114)[1].options[document.getElementById(114)[1].selectedIndex].value
Der Rückgabewert von getElementById ist keine HTML-Collection, sondern ein Objekt (oder eben false). Daher kann Dein "[1]" zu nichts anderem, als eben einem Fehler führen! Wenn Du sicherstellen möchtest, dass Du wirklich das Select-Feld erwischst, dann nimm nicht "getElementById", sondern "getElementsByTagName('select')". Wenn Du sicher sein kannst, dass es nur ein Select-Feld im Formular gibt, dann kannst Du Dir das Prüfen auf die dem Select-Feld gegebene ID sparen. Sollten aber mehrere Select-Felder im Formular existieren, so musst Du die anderen eben aussortieren.
// ungetestet!
var allSelects = document.getElementsByTagName("select");
var mySelect = allSelects[0]; // reicht aus, wenn es nur ein Select-Feld gibt
if (allSelects.length > 1) {
// es gibt (leider) doch mehrere Select-Felder
for (var i=0; i < allSelects.length; i++) {
if (allSelects[i].id && allSelects[i].id == "114")
mySelect = allSelects[i];
}
}
var myValue = mySelect.options[mySelect.selectedIndex].value;
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo Felix,
»»SELFHTML sagt, dass der Wert des Namensattributes mit einem Buchstaben beginnen muss.
Leider geht es nicht anders und es funzt in jedem Browser.
Desweiteren darf eine ID dokumentweit nur einmal vergeben werden (daher heißt die Methode auch "getElementById" und nicht "getElement_s_ById").
Naja, ich habe hier ein dynamisches Forular und da erspare ich mir sehr viel, wenn manche Felder den gleichen Namen haben.
Vielen, vielen Dank für dein Script, es hat perfekt funktioniert.
lg
Thomas
hi,
Desweiteren darf eine ID dokumentweit nur einmal vergeben werden (daher heißt die Methode auch "getElementById" und nicht "getElement_s_ById").
Naja, ich habe hier ein dynamisches Forular und da erspare ich mir sehr viel, wenn manche Felder den gleichen Namen haben.
So ein Unfug.
gruß,
wahsaga