for循环传递参数中的多个onchange效果

时间:2019-05-22 06:44:49

标签: javascript for-loop parameters onchange

我正在尝试在JavaScript中进行for循环,在该循环中,我为循环/列表中的每个元素放置了一个onChange函数。当onChange触发时,setValidation函数应使用正确的参数触发:

我现在一直在尝试以下代码

var allConditions = document.getElementsByClassName("condition-container");

for (let i = 0; i < allConditions.length; i++) 
{
    document.getElementById("PropertyPre" + i).onchange = function () 
    {
        setValidation(false, i);
    }
};


function setValidation(firstTime, elementNumber) 
{
   console.log("This is number: " + elementNumber);
}

当我在HTML元素PropertyPre0上进行更改时,实际输出如下:This is number 2,但实际上应该返回This is number 0

有人知道如何修改代码吗?

1 个答案:

答案 0 :(得分:1)

我假设您有3个div元素,其类别为“ condition-container”,id为“ PropertPre” + i(取决于您拥有多少个类别)

var allConditions = document.getElementsByClassName("condition-container");

for (let i = 0; i < allConditions.length; i++) 
{
    document.getElementById("PropertyPre" + i).onchange = function () 
    {
        return setValidation(false, i);
    };
};


function setValidation(firstTime, elementNumber) 
{
   console.log("This is number: " + elementNumber);
}
<div class="condition-container">
<div class="condition-container">
<div class="condition-container">
<input id="PropertyPre0">
<input id="PropertyPre1">
<input id="PropertyPre2">