3

我有一个表单,它可以将值传递给 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 方法对应于 SELECT 对象而不是选定的 OPTION 对象。您应该掌握选定的 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;
}

在onchange中:

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 回答