在不使用onchange属性的情况下获取选定值

问题描述:

我想要使用相同的结果而不使用onchange属性。 有些想法?在不使用onchange属性的情况下获取选定值

这里的HTML:

<select onchange="filtro(this)" id="tipo" name="noticia/conteudo/tipo"> 
    <option value="Layout1">Layout1</option> 
    <option value="Layout2">Layout2</option> 
    <option value="Layout3">Layout3</option> 
    <option value="Layout4">Layout4</option> 
    <option value="Layout5">Layout5</option> 
</select> 

这里是JS:

function filtro(a) { 
    var x = (a.value || a.options[a.selectedIndex].value); 
    alert(x); 
    if (x == "Layout4"){ 
     alert('test4'); 
    } 
} 
+1

如果不改变,什么时候? – Barmar 2013-02-25 19:05:08

+0

我想要ecxatly代码正在做什么,但不使用onchange标签里面的选择标签 – user1309015 2013-02-25 19:14:31

你只能在JS做到这一点没有属性

document.getElementById("id").onchange=function(){ ... }; 
+0

帮助哥们儿! – user1309015 2013-02-25 19:36:22

你可以做的简单方法

var e = document.getElementById("tipo"); 
var tipoValue = e.options[e.selectedIndex].value; 

会使tipoValue成为选定选项的值。 如果你想获得的文字,你可以做到这一点:

var e = document.getElementById("tipo"); 
var tipoText = e.options[e.selectedIndex].text; 

总的来说我的建议是考虑引进一些JavaScript库,如jQuery

+0

TKS帮助budy ... – user1309015 2013-02-25 19:37:38

+0

欢迎您! – vaske 2013-02-26 15:37:13

您可以添加一个事件监听器避免使用onchange属性。

HTML:

<select id="tipo" name="noticia/conteudo/tipo"> 
    <option value="Layout1">Layout1</option> 
    <option value="Layout2">Layout2</option> 
    <option value="Layout3">Layout3</option> 
    <option value="Layout4">Layout4</option> 
    <option value="Layout5">Layout5</option> 
</select> 

的JavaScript:

function filtro(a) { 
    var x = (a.value || a.options[a.selectedIndex].value); 
    alert(x); 
    if (x == "Layout4"){ 
     alert('test4'); 
    } 
} 

var sel = document.getElementById('tipo'); 
sel.addEventListener('change', function() { filtro(sel) }, false); 

的jsfiddle:http://jsfiddle.net/jeffshaver/HfmWV/7/

+0

Tks dude ...就是这样! – user1309015 2013-02-25 19:34:06

+0

唯一的问题,它不适用于IE 8或更低版本...... – user1309015 2013-02-25 20:15:25

+0

你知道如何解决? – user1309015 2013-02-25 20:26:23