2012-04-19 96 views
0

我想这取决于所选择<option>元素不同的行为:如何通过选择到HTML选择

<select name="colorSelector" onchange="handleColorChange();"> 
    <option value="">- select -</option> 
    <option value="1">Red</option> 
    <option value="2">Blue</option> 
</select> 

function handleColorChange() { 
    // Behave different depending on which <option> was just selected 
} 

什么我需要传递到handleColorChange()方法从onchange监听器里才能做到这一点?

回答

2

貌似没有人提到switch呢。另外,不要把这个函数放在HTML中,那太糟糕了。这是正确的方式:

document.getElementsByName('colorSelector')[ 0 ].onchange = function () { 
    switch (this.options[ this.selectedIndex ].value) { 
     case '1': 
      // Do something when "Red" is selected 
      break 
     case '2': 
      // Do something when "Blue" is selected 
      break 
    } 
} 
+0

,如果它在一个形式,他也可以用'document.forms [0] .elements [“colorSelect”] onchange'(假设它是页面上的第一种形式......。或者如果你更喜欢你可以给你的形式一个名称,并使用它。 – rlemon 2012-04-19 17:09:06

+0

是的,但由于没有更多的信息可用,我去了... – 2012-04-19 17:16:35

+0

我知道,我只是补充说信息***如果*** OP *有它可用*:P欢呼 – rlemon 2012-04-19 17:25:42

0

你没有传递什么功能,只是分配一个ID选择:

<select id="mySelect" name="colorSelector" onchange="handleColorChange();"> 
    <option value="">- select -</option> 
    <option value="1">Red</option> 
    <option value="2">Blue</option> 
</select> 

function handleColorChange() { 
var x=document.getElementById("mySelect").selectedIndex; 
var y=document.getElementById("mySelect").options; 
alert("Index: " + y[x].index + " is " + y[x].text); 
} 

,或者如果你想通过名称来获得,然后做在你的函数:

var x=document.getElementsByName("colorSelector")[0].selectedIndex; 
var y=document.getElementsByName("colorSelector")[0].options; 
alert("Index: " + y[x].index + " is " + y[x].text); 
0

使用this

<select name="colorSelector" onchange="handleColorChange(this);"> 
    <option value="">- select -</option> 
    <option value="1">Red</option> 
    <option value="2">Blue</option> 
</select> 

function handleColorChange(element) { 
    // Behave different depending on which <option> was just selected 
} 
1

尝试

function handleColorChange(self) 
{ 
    console.log(self.selectedIndex); 
    console.log(self.options[self.selectedIndex].text); 
    console.log(self.options[self.selectedIndex].value) 
}; 

而在HTML代码

<select id="mySelect" name="colorSelector" onchange="handleColorChange(this);"> 
0
<select name="colorSelector" onchange="handleColorChange(this);"> 
    <option value="">- select -</option> 
    <option value="1">Red</option> 
    <option value="2">Blue</option> 
</select>​ 


function handleColorChange(obj) { 
    alert(obj.options[obj.selectedIndex].value); 
}​ 

的jsfiddle here