Thomas: Wert aus select-Feld auslesen

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

  1. 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.

    1. 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

      1. 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

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }