2 Stimmen

Objekt HTMLSelectElement Zugriff auf Wert durch dieses Schlüsselwort

Der folgende Code gibt den Wert nicht aus.

function go(x)
{
   alert(x.options.selectedIndex.value);
   //location=document.menu.student.options[document.menu.student.selectedIndex].value
}

Dies ist der HTML-Code

<select name="student" onChange="go(this)">
    <option selected> Student </option>
    <option value="http://www.cnet.com">Attendence</option>
    <option value="http://www.abc.com">Exams</option>
</select>

6voto

T.J. Crowder Punkte 948310

selectedIndex ist eine Zahl, sie hat keine value Eigentum.

Wenn Sie eine select Element, das nur eine Einfachauswahl zulässt (wie Ihres), ist der einfachste Weg, seinen Wert zu erhalten, die select Element value Eigenschaft :

function go(x) {
    alert(x.value);
}

Überprüfen Sie, ob es auf den Browsern funktioniert, die Sie unterstützen wollen, aber MaryAnne (siehe Kommentare) hat es auf allen aktuellen gängigen Browsern überprüft, und ich habe IE6, IE7 und Firefox 3.6 (z.B. ältere Browser) überprüft, und sie funktionieren alle. Da es in DOM2 HTML (der Link oben) angegeben ist...

Aber re selectedIndex meinten Sie wahrscheinlich:

function go(x) {
    alert(x.options[x.selectedIndex].value);
}

Ich würde wahrscheinlich noch etwas weiter gehen und defensiver sein:

function go(x) {
    var option = x.options[x.selectedIndex];
    if (option) {
        alert(option.value);
    }
}

...oder

function go(x) {
    var option = x.options[x.selectedIndex];
    var value = option && option.value;
    alert(value); // Alerts "undefined" if nothing is selected
}

...falls es keine ausgewählte Option gibt (in diesem Fall, option wird undefined ), obwohl mit Ihrem besondere Markup und Code, ist mir kein User-Agent bekannt, bei dem die change ausgelöst werden, ohne dass etwas ausgewählt wurde. Zumindest glaube ich das nicht - "ich glaube" ist der Grund für die Defensive :-)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X