Javascript 选择带有参数的onchange事件

Javascript 选择带有参数的onchange事件,javascript,select,Javascript,Select,我在一个循环中创建n个选择: selCom = document.createElement("SELECT"); selCom.setAttribute("id", ("commessa"+n)); 我想为每个更改分配一个函数:(对于禁用其他,请选择具有相同索引的选项) 如果OnSelectionChange(此)起作用,OnSelectionChange(此,n)不起作用 function OnSelectionChange(select,indexDisable) { var

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

selCom = document.createElement("SELECT");
selCom.setAttribute("id", ("commessa"+n));
我想为每个更改分配一个函数:(对于禁用其他,请选择具有相同索引的选项)

如果OnSelectionChange(此)起作用,OnSelectionChange(此,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;
        }
}

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

您可以添加事件侦听器,而不是像那样设置html属性

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);

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

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);

另一种方法是使用data-*属性

<div data-id="1" onclick="dataTest()">TEST!</div>
以下是有关数据-*属性的更多信息

另一种方法是使用data-*属性

<div data-id="1" onclick="dataTest()">TEST!</div>
以下是有关数据-*属性的更多信息
还有,这里是