3

onchange が値を JavaScript 関数に渡すフォームがあります。this.value と student.value を渡すことができましたが、 this.title は何も返しません。

オプションのタイトルを取得するにはどうすればよいですか?

ありがとう

<form>
<select id="student" style="width:100%">
<option value="">--</option>
<option value="">A</option>
</select>

<select id="course" onchange="showarchive(this.value, this.title, student.value)" style="width:100%"/>
<option value="">--</option>
<option value="" title="" class=""></option>
</select>
4

5 に答える 5

6
this.options[this.selectedIndex].title

これは、選択したオプションのタイトルです。

これがJSFIDDLEです。

于 2012-09-03T08:39:35.347 に答える
2

これらすべての引数を入力するという面倒なことをする必要はありません。必要なものはすべてイベント オブジェクトから取得できます。変更するだけです。

<select id="course" onchange="showarchive(this.value, this.title, student.value)">

に:

<select id="course" onchange="showarchive(event)">

関数を少し変更します。

function showarchive (e)
{
    e = e || window.event;//just for safety
    var select = e.target || e.srcElement;//select.id === course now
    var selected = select.options[select.selectedIndex];//your freshly selected option element here
    var title = selected.title;//etc...
    //as an added bonus:
    if (e.preventDefault)
    {
        e.preventDefault();
        e.stopPropagation();
        return e;
    }
    e.returnValue = false;
    e.cancelBubble = true;//redundant: onchange doesn't bubble in IE
}

そうすれば、必要なものすべてにアクセスできます。イベント自体をキャンセルしたり、その動作を操作したりできます。

于 2012-09-03T08:52:09.793 に答える
1

thisそのonchangeメソッドは、選択されたOPTIONオブジェクトではなく、SELECTオブジェクトに対応します。選択したOPTIONを取得してから、title属性にアクセスする必要があります。

于 2012-09-03T08:39:13.263 に答える
1

次のように取得できます。

function getSelectedText(elementId) {
    var elt = document.getElementById(elementId);

    if (elt.selectedIndex == -1)
        return null;

    return elt.options[elt.selectedIndex].text;
}

そしてオンチェンジで:

showarchive(this.value, getSelectedText('course'), student.value);
于 2012-09-03T08:41:59.920 に答える
1

これがサンプルです(別の例) http://jsfiddle.net/gbsandeep/Dk3nh/

あなたは実行することができます

mySelect.options[mySelect.selectedIndex].innerText

値を取得します。

于 2012-09-03T08:52:30.423 に答える