使用参数选择onchange事件

时间:2015-06-03 16:13:09

标签: javascript select

我在一个循环中创建n选择:

selCom = document.createElement("SELECT");
selCom.setAttribute("id", ("commessa"+n));

我想为每个更改分配一个函数:(用于禁用具有相同索引的其他select)

selCom.setAttribute("onchange", "OnSelectionChange(this,n)");

OnSelectionChange(this)有效,OnSelectionChange(this,n)不起作用

 function OnSelectionChange(select,indexDisable) {
    var selectedOption = select.options[select.selectedIndex];
        if ((selectedOption.value)=="Work"){
            document.getElementById("Attivita"+indexDisable).disabled=true;
        }else{
            document.getElementById("Attivita"+indexDisable).disabled=false;
        }
}

用于传递参数的正确形式是什么?

2 个答案:

答案 0 :(得分:0)

您可以添加事件侦听器,而不是像这样设置html attr。

function OnSelectionChange(indexDisable) {
    var select = this;

    var selectedOption = select.options[select.selectedIndex];
    if ((selectedOption.value)=="Work"){
        document.getElementById("Attivita"+indexDisable).disabled=true;
    }else{
        document.getElementById("Attivita"+indexDisable).disabled=false;
    }
}

selCom.addEventListener('change', function(n){
    OnSelectionChange(n);
}, false);

答案 1 :(得分:0)

其他方式是使用data- * attributes

<div data-id="1" onclick="dataTest()">TEST!</div>

然后在JS函数中,您可以通过以下方式访问id

function dataTest() {
    alert(event.target.dataset.id);
}

这里有关于data- * attributes more info的更多信息 而且,这是example