2012-02-29 54 views
1

可能重复:
JavaScript retrieving the text of the selected option in select element如何传递innerHTML参数?

<select name="users" onchange="showUser(this.value)"> 
<option value="">Select a person:</option> 
<option value="1"> Option1 </option> 
<option value="2"> Option2 </option> 
<option value="3"> Option3 </option> 
<option value="4"> Option4 </option> 
</select> 

从上面的例子中,整数值被通过使用THIS.VALUE传递给showUser功能。如果不是传递值,我想传递选项标签内的任何内容,比如“Option1”,我该怎么做?我曾尝试使用

showUser(this.innerHTML) 

但这似乎并没有工作,或者我正在接近它不正确。我在网上查找了使用getElementByID的选项,但是我想我需要每个选项的唯一ID。

+0

我看着这个之前,但是我想避免此特定情况下的元素ID。 – user1152440 2012-02-29 16:45:27

+0

然后只需忽略'getElementById'步骤。你已经有了对元素的引用('this')。使用它。 – 2012-02-29 17:04:53

回答

4

你会使用:

showUser(this.selectedIndex >= 0 ? this.options[this.selectedIndex].text : ''); 

HTMLSelectElementHTMLOptionsElement的DOM2 HTML规范的文档。

+0

如果我在最后用双引号“”替换单引号“',上面的代码完美地工作。 (我认为这是因为onchange已经被引号包围了)。谢谢您的回复。 – user1152440 2012-02-29 16:42:10

1

在这方面,this指<选择>元素,而不是所选择的选项< >。我想你想要做的showUser(this.options[this.selectedIndex].innerHTML)

+0

该解决方案完美运行。 – user1152440 2012-02-29 16:43:16

2

HTML:

<select name="users" onchange="showUser(this)"> 
    <option value="">Select a person:</option> 
    <option value="1"> Option1 </option> 
    <option value="2"> Option2 </option> 
    <option value="3"> Option3 </option> 
    <option value="4"> Option4 </option> 
</select> 

的javascript:

function showUser(obj){ 
    alert(obj.options[obj.selectedIndex].innerHTML); 
} 

小提琴:http://jsfiddle.net/vPhq3/1/

+0

谢谢你的回复,这也适用! – user1152440 2012-02-29 16:44:18

+0

欢迎你好友..很高兴帮助你.. – 2012-02-29 17:48:08