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

时间:2013-02-25 19:02:01

标签: javascript select onchange selectedvalue

我希望在不使用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');
    } 
}

3 个答案:

答案 0 :(得分:2)

您可以添加事件侦听器以避免使用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/

答案 1 :(得分:1)

你可以轻松地做到这一点

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

答案 2 :(得分:0)

您只能在没有属性

的js中执行此操作
document.getElementById("id").onchange=function(){ ... };